用于符号但不用于空格的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)
定义符号。如果你只是在找
$%^&*
,为什么不只是/[\$%\^&*]/
?是的,我错过了!:)