[英]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.