我用这个正则表达式匹配任何字符串只包含英文字母/^[a-zA-Z\s]+$/
JavaScript的正则表达式匹配一些特殊字符
现在我需要编辑这使匹配破折号“ - ”和点“”连同英文字母。 该字符串可能包含短划线或点或非(只是字母)。
任何想法?
我用这个正则表达式匹配任何字符串只包含英文字母/^[a-zA-Z\s]+$/
JavaScript的正则表达式匹配一些特殊字符
现在我需要编辑这使匹配破折号“ - ”和点“”连同英文字母。 该字符串可能包含短划线或点或非(只是字母)。
任何想法?
正则表达式/^[a-zA-Z\s\-\.]+$/
将匹配你所需要的。
无需在字符类逃脱'.'也'-'如果放在以下'['或之前']' –
@NaveedS它可能不是必要的,但更清楚我这样的,你不不必担心课堂上还有其他的东西。 –
@ G-Nugget ..只是一个建议。如果有人给你很好的建议,请收下。这是你学习的方式。否则你总会在你的一生中犯同样的错误。 –
对于-
和.
和空间:
/^[-a-z\s.]+$/i
// "Foo-bar" OK
// "Foo.bar" OK
// "Foo bar" OK
// "Foo - bar" OK
// "Foo.bar-zaz" OK
// "Foo.bar-zaz TROZ" OK
对于-
或.
或空间:
/^[a-z\s]+$|^[-a-z]+$|^[a-z.]+$/i
// "Foo-bar" OK
// "Foo.bar" OK
// "Foo bar" OK
// "Foo - bar" FAIL
// "Foo.bar-zaz" FAIL
// "Foo.bar-zaz TROZ" FAIL
让我解释一下:
/i
忽略大小写,所以你d on't需要A-Z
|
(管)做或给你。
^
您的字符串
$
在开始直到结束现在
只是内部字符限制[...]
:
把-
在开始的字符限制的是很好的做法,因为它表明一个范围在很多方面,所以在开始的时候避免错误。
\s
空白空间(无法范围JS)
.
内部[.]
只是一个点,但外面是指任何字符(甚至不可见的)。
你需要在字符类的末尾加上'-'。否则,您正在创建从'\ s'到'的范围。' –
@RohitJain不,我不是......我测试了代码,请指出你的意思 –
当你在字符类中使用'-'时,它有一个特殊的含义,用作范围。要从字面上匹配'-',你应该把它放在字符类的两端。因此: - [[s - 。]'不同于: - [[ - s。]]或[[s .-]']。 –
的可能重复的[含在一个正则表达式字符托架连字符?](http://stackoverflow.com/questions/3697202/including-a-hyphen-in-a-regex-character-bracket) – RivieraKid