2013-04-04 47 views
0

我有一個正則表達式逗號分隔字母允許尾隨逗號和空格,正則表達式不工作的正確輸入

var rgx = /^[a-z\sA-Z]+(,[a-z\sA-Z]+)*,\s$/; 
    return rgx.test(inputStr); 

當我給兩個或更多的空間,它失敗

name, fname lname, 

時後我糾正與正則表達式匹配的輸入,它也失敗了。

name, fname lname,   

所以基本上,只要正則表達式失敗,則即使我校正輸入,正則表達式不匹配輸入和我不能進一步移動。

回答

0
,\s$ 

在輸入結束之前的逗號之後恰好匹配一個空格。最後兩個空格將導致它失敗。

爲了解決這個問題,嘗試

/^[a-z\sA-Z]+(,[a-z\sA-Z]+)*,\s+$/ 

如果你想在最後的逗號和空格是可選的,儘量

/^[a-z\sA-Z]+(,[a-z\sA-Z]+)*(?:,\s*)?$/ 

我有點不清楚你想要什麼儘管這裏。

這個正則表達式除了在起始處和相鄰處不允許使用逗號之外,並沒有做太多的工作。

+0

謝謝@Mike,但我的問題在於,正則表達式工作時,只要我給不需要的輸入,但一旦給出了錯誤的輸入,然後即使我糾正輸入根據正則表達式總是失敗。 簡而言之: - 一旦失敗,一直失敗,直到我重新加載窗口 – rkj 2013-04-04 07:04:28

+0

@rohitj,你能提供一個短的可運行示例嗎? – 2013-04-04 07:07:33

+0

這個(/^[az \ sA-Z] +(,[az \ sA-Z] +)*(?:,\ s *)?$ /)正規表達式工作 你能解釋一下你/正則表達式和我的。我不清楚哪部分不是與我的工作,現在正在與您的正則表達式.. 和感謝很多@Mike的解決方案... – rkj 2013-04-04 07:24:40