0

文字といくつかの文字のみを許可する必要があります。私はこの正規表現を使用します:

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

しかし、これにより、, ; : .

なんで?

4

2 に答える 2

2

文字クラス内のハイフン ( ) は範囲を指定します。次のように-変更して、バックスラッシュでこれをエスケープする必要があります。[a-zA-Z '-_]

[a-zA-Z '\-_]

これがないと、正規表現エンジンはからまで'-_の範囲の文字として解釈され、次の文字が含まれます ( 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 に答える