2013-01-09 112 views
1

我用这个正则表达式匹配任何字符串只包含英文字母/^[a-zA-Z\s]+$/JavaScript的正则表达式匹配一些特殊字符

现在我需要编辑这使匹配破折号“ - ”和点“”连同英文字母。 该字符串可能包含短划线或点或非(只是字母)。

任何想法?

+0

的可能重复的[含在一个正则表达式字符托架连字符?](http://stackoverflow.com/questions/3697202/including-a-hyphen-in-a-regex-character-bracket) – RivieraKid

回答

3

只需添加-.在字符类是这样的:

/^[-.a-zA-Z\s]+$/ 
+0

1为不要逃离角色类中的点,就像你经常看到的那样...... – fge

+0

+!清洁液 –

0

正则表达式/^[a-zA-Z\s\-\.]+$/将匹配你所需要的。

+3

无需在字符类逃脱'.'也'-'如果放在以下'['或之前']' –

+1

@NaveedS它可能不是必要的,但更清楚我这样的,你不不必担心课堂上还有其他的东西。 –

+2

@ G-Nugget ..只是一个建议。如果有人给你很好的建议,请收下。这是你学习的方式。否则你总会在你的一生中犯同样的错误。 –

1

对于-.空间

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

.内部[.]只是一个点,但外面是指任何字符(甚至不可见的)。

+0

你需要在字符类的末尾加上'-'。否则,您正在创建从'\ s'到'的范围。' –

+0

@RohitJain不,我不是......我测试了代码,请指出你的意思 –

+0

当你在字符类中使用'-'时,它有一个特殊的含义,用作范围。要从字面上匹配'-',你应该把它放在字符类的两端。因此: - [[s - 。]'不同于: - [[ - s。]]或[[s .-]']。 –

相关问题