0

我只需要允许字母和一些字符。我使用这个正则表达式:

([a-zA-Z '-_]*)$")

但这也允许, ; : .

为什么?

4

2 回答 2

2

字符类中的连字符 ( -) 指定一个范围,您应该通过更改[a-zA-Z '-_]为以下内容用反斜杠对其进行转义:

[a-zA-Z '\-_]

如果没有这个,正则表达式引擎将解释为从to'-_的一系列字符,其中包括以下字符 ( http://www.asciitable.com/ ):'_

' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _

您可能还想在正则表达式的开头和结尾添加 a ^$这些是字符串锚点的开头和结尾,它们将阻止您的正则表达式仅匹配字符串的一部分。

于 2013-04-26T19:38:55.563 回答
0

你必须^在开始和$结束时设置强制它只是那个组:

/^[a-zA-Z \'\-_]+$/.test('Adidi:') // false 
于 2013-04-26T19:46:18.997 回答