regex 多个集合上的正则表达式匹配[重复]

qaxu7uf2  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(171)

此问题已在此处有答案

JavaScript regex character exclusion(5个答案)
关闭27天前。
我不想再问一个Regex问题,因为在堆栈溢出的世界里有很多问题。然而,我正在努力做到以下几点
匹配可以包含以下字符集的单词或短语:

\u00C0-\u1EF3

\x20-\xFF

但不是在

\/:<>|?"*´§¤°¸¨'

我尝试了以下几种组合,但都不能完全得到它:
这里有一个尝试:

^([\\u00C0-\\u1EF3]|[\\x20-\\xFF](?=[^\\\/:<>|?"*´§¤°¸¨']))$

下列单词或短语列表应该有效

  • 凯什尔克山
  • alksdj laksjdflksd laksj22332
  • 1234
  • $asdf123
  • 公司简介

但以下内容不应匹配

  • ?"*majslkdfjslk
  • ¤°¸¨

我用JavaScript来做这个。

v64noz0r

v64noz0r1#

(我假设\/表示两个字符:反斜杠和正斜杠。)
在JavaScript正则表达式中有两种方法可以做到这一点。
使用lookarounds,您可以通过将不需要的字符放在lookaround内的字符类中来避免匹配这些字符:

(?![\\/:<>|?"*´§¤°¸¨'])
[\u00C0-\u1EF3\x20-\xFF]

试试on regex101.com
[\u00C0-\u1EF3\x20-\xFF](?<![\\/:<>|?"*´§¤°¸¨'])具有相同的效果,但支持较少。
使用the new v flag,您可以直接执行集合操作:

[
  [\u00C0-\u1EF3\x20-\xFF]--
  [\\\/:<>\|?"*´§¤°¸¨']  
]

试试on regex101.com
请注意,即使|已经在字符类中,也必须对它进行转义。请参阅this answer了解更多信息。

相关问题