在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/