node.js - 正则表达式:如果第一个字符是 '%' 或字母数字,则

标签 node.js regex

在nodejs中,我必须遵循模式

(/^(>|<|>=|<=|!=|%)?[a-z0-9 ]+?(%)*$/i

仅匹配字母数字字符串,带有可选的后缀和带有一些特殊字符的前缀。而且它工作得很好。

现在,仅当第一个字符是字母数字(不区分大小写)或也是 % 时,我才想匹配最后一个“%”。然后它可以选择允许,否则它不应该匹配。

示例:

应该匹配:

>test
!=test
<test
>=test
<=test
%test
test
%test%
test%

不应匹配的示例:

<test% <-- its now matching, which is not correct
<test< <-- its now **not** matching, which is correct

有什么想法吗?

最佳答案

您可以在 ^ 之后添加否定前瞻喜欢

/^(?![^a-z\d%].*%$)(?:[><]=?|!=|%)?[a-z\d ]+%*$/i
  ^^^^^^^^^^^^^^^^^  

请参阅regex demo详细信息:

  • ^ - 字符串开头
  • (?![^a-z\d%].*%$) - 如果存在字母数字或 % 以外的字符,则匹配失败在开始和 %最后
  • (?:[><]=?|!=|%)? - 可选匹配 < , > , <= , >= , !=%
  • [a-z\d ]+ - 一个或多个字母数字或空格字符
  • %* - 零个或多个%字符
  • $ - 字符串结尾

关于node.js - 正则表达式:如果第一个字符是 '%' 或字母数字,则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68363145/

相关文章:

javascript - Node.js promise 有时不会执行

javascript - NODE - 等待一个 api 调用完成后再触发下一个 api 调用

node.js - 函数返回值在nodejs中未定义

java使用正则表达式从字符串中删除模式

正则表达式中的 JavaScript 插入符未按预期工作

node.js - 在 Mongoose 查询中选择字段值不等于某些内容的字段

javascript - Node.js - 设置系统日期/时间

python - 字符串中的python正则表达式搜索

php - .htaccess RewriteRule 500 内部服务器错误

javascript - 匹配新行不起作用