行为不端的正则表达

时间:2015-10-13 14:48:18

标签: javascript regex

我一直在JavaScript中使用RegEx /[ -~]/i一段时间,发现它可以很好地测试任何 ASCII字符,包括空格。今天我不小心使用了/^[ -~]$/i,我惊讶地发现/^[ -~]$/i.test('Stackoverflow is great')因空间特征而失败。我对正则表达式的理解相当有限,但即便如此,我也没有看到我在这里做错了什么。也许这里的人可以对正在发生的事情有所了解?

1 个答案:

答案 0 :(得分:4)

您错过了量词,+*

alert(/^[ -~]*$/i.test('Stackoverflow is great'));

如果没有量词,字符类只匹配 1 符号。在这种情况下,您需要该量词,因为您添加了需要在字符串开头(^)和字符串结尾($)进行匹配的锚点。

请注意,*表示匹配前一个子模式的0次或更多次+匹配1个或多个匹配项。

正如你的正则表达式所匹配的那样,因为连字符在空格和波浪之间创建了一个范围:

enter image description here