正则表达式模式 - 允许字母数字,一堆特殊字符,但不是特定的字符序列

Joh*_*orf 2 regex validation match

我有以下正则表达式:

(?!^[&#]*$)^([A-Za-z0-9-'.,&@:?!()$#/\\]*)$
Run Code Online (Sandbox Code Playgroud)

所以允许AZ,aZ,0-9和这些特殊的字符 '.,&@:?!()$#/\

如果在此字符串中的任何位置遇到以下字符集,我想不匹配:

&#
Run Code Online (Sandbox Code Playgroud)

当我使用"&#"作为输入运行此正则表达式时,它与我的模式不匹配,我收到错误,很棒.当我运行正则表达式时'.,&@:?!()$#/\ABC123它与我的模式匹配,没有错误.

但是当我运行时:

'.,&#@:?!()$#/\ABC123
Run Code Online (Sandbox Code Playgroud)

它也没有错误.我在检查&#序列时遇到了问题.

有人能告诉我我做错了什么,我对这些事情并不好.

Ben*_*ank 5

借用匹配引用字符串的技术,&从您的字符类中删除,添加一个& 后跟的替代方法#,并允许该字符串可选地结束&:

^((?:[A-Za-z0-9-'.,@:?!()$#/\\]+|&[^#])*&?)$

  • 这也会允许像"&Δ"这样的序列,而Δ是`[^#]`之一,例如"_","<",">"等.所以以下会更好:^(?:[A -za-Z0-9 - :|,@ - '@()$#/ \\] + [A-ZA-Z0-9?!':?!()$/\\])*$ (2认同)