2013-01-09 120 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 .-]']。 –

相關問題