繁体   English   中英

符号而不是空格的Javascript正则表达式

[英]Javascript regex for symbol but not space

我想测试一个符号的字符串(例如$%^&* ),所以我使用以下运行良好的正则表达式:

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

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

DEMO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM