用于符号但不用于空格的Javascript正则表达式

用于符号但不用于空格的Javascript正则表达式,javascript,regex,Javascript,Regex,我想测试字符串中的符号(例如,$%^&*),因此我使用了下面的正则表达式: /[\W+]/.test(string) 但是,空格也与这个正则表达式匹配。我真正想要的是测试一个符号,而不是一个空格。我正在尝试以下代码,但空格仍然匹配: /[\W\S+]/.test(string) 有更好的方法吗?因为空格包含在\W中,所以需要使用否定字符类: [^\w\s] 但是,您必须清楚地定义您所称的“符号”,因为此字符类包括例如重音字母和所有超出ascii范围的字符。\W相当于[^a-Za-z0-9\

我想测试字符串中的符号(例如,
$%^&*
),因此我使用了下面的正则表达式:

/[\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)

您的regex
[\W\S+]
也与literal
+
匹配,因为它是字符类的一部分。我认为您需要将其放置在类外以匹配1个或多个字符。

此正则表达式可能会帮助您:
[^\s\w]

您也可以试试这个

(?!\s)\W
这将匹配任何非单词字符,但不匹配空格

/(?:(?!\s)\W)+/.test(string)
即,匹配一个或多个非单词字符,但不匹配空格

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

定义符号。如果你只是在找
$%^&*
,为什么不只是
/[\$%\^&*]/
?是的,我错过了!:)