Javascript正则表达式符号,但不是空间

Javascript regex for symbol but not space

本文关键字:空间 正则表达式 符号 Javascript      更新时间:2023-09-26

我想测试一个字符串的符号(例如$%^&*),所以我使用以下regex工作良好:

/['W+]/.test(string)

但是,这个正则表达式也匹配一个空格。我真正想测试的是一个符号,而不是一个空间。我正在尝试以下代码,但仍然匹配空格:

/['W'S+]/.test(string)

有更好的方法吗?

由于空格包含在'W中,您需要使用一个否定的字符类:

[^'w's]

但是,您必须清楚地定义您所谓的"符号",因为该字符类包括例如重音字母和所有超出ascii范围的字符。

'W相当于[^A-Za-z0-9_],意思是"除这些字符以外的任何字符"。因此,您可以使用[^A-Za-z0-9_ ](注意末尾的空格)来排除空格。

您可以为'W(即'w)使用反向简写字符类,并在字符类中使用否定:

/[^'w's]+/.test(string)

你的正则表达式['W'S+]也匹配文字+,因为它是字符类的一部分。我认为你需要把它放在类之外,以匹配1个或多个字符。

这个正则表达式可以帮助你:[^'s'w]

https://regex101.com/r/jO4uU6/3

你也可以试试这个

(?!'s)'W

这将匹配任何非单词字符,但不匹配空格。

/(?:(?!'s)'W)+/.test(string)

即匹配一个或多个非单词字符,但不包含空格。

演示