[英]RegEx: If first character is '%' or alphanumeric then
在 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
^^^^^^^^^^^^^^^^^
请参阅正则表达式演示。 详情:
^
- 字符串的开始(?![^az\\d%].*%$)
- 如果开头是字母数字或%
以外的字符,结尾是%
,则匹配失败(?:[><]=?|!=|%)?
- 可选匹配<
、 >
、 <=
、 >=
、 !=
或%
[az\\d ]+
- 一个或多个字母数字或空格字符%*
- 零个或多个%
字符$
- 字符串结尾您可能会使用替代|
匹配任一选项。
^(?:[a-z0-9%](?:[a-z0-9 ]*%)?|(?:[<>]=?|!=|%)?[a-z0-9 ]+)$
^
字符串开始(?:
非捕获组
[a-z0-9%]
匹配字符类中列出的一个(?:[a-z0-9 ]*%)?
可选匹配重复 0+ 次的任何字符类,后跟%
|
或者(?:[<>]=?|!=|%)?
可选择匹配其中一个选项[a-z0-9 ]+
匹配任意字符类的 1+ 次)
关闭非捕获组$
字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.