2013-07-14 57 views
1

我想匹配有關的話整個字符串在中間的空間只正則表達式,只有

我有這樣的作品之間的空間:

/^[\ba-zA-Z]+$/.test(this.value) 

我要爲它有沒有空,返回true與在端部沒有空格詞語,只佔字母和具有至少1

然而,上述返回false爲「ASD ASDF」,如果它認爲任何空間返回false長度

+0

它必須是正則表達式?這可以通過字符串函數輕鬆完成 – kennypu

+0

什麼是空白字? – Bart

+0

我不明白這個問題,但是你似乎對字邊界/'\ b'有兩個誤解:(1)字邊界是一個零寬度斷言(匹配長度爲0的子字符串,而不是字符)。所以'/。\ b。/'匹配''a-「'和'」-a「'(但不是''aa」'或'' - 「')。 (2)字符類匹配單個字符(不是零寬度斷言),所以字符類中的'\ b'不是字的邊界。它是一個alert/bell字符(請參閱ASCII表格)。 PS:在字符類中使用空格字符沒有任何問題。 –

回答

1

嘗試使用這種模式:

/^[a-zA-Z]+([a-zA-Z]+)*$/ 

這將匹配由單個空格分隔(的拉丁字母)的任何序列的話,但在末端沒有空格。

也可以將此通過i標誌區分大小寫匹配簡化一點:

/^[a-z]+([a-z]+)*$/i 
+0

爲什麼我的其他正則表達式不起作用的任何解釋? – user2580016

+0

@ user2580016您的解決方案不起作用,因爲在字符類'\ b'內實際引用* backspace *字符 - 原始[ASCII控制字符]之一(http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters)。所以你的模式可以匹配任何拉丁字母或退格字符序列。 –

+0

我該如何將最小和最大字符限制添加到此正則表達式中? {3,20} – peterkr