2012-01-11 55 views
0

我希望這個正則表達式允許破折號「 - 」。任何數額都可以。我如何添加允許任何數量的破折號到這個REGEX

(?:\d*[a-z]){0,1}\d*$ 

目前這個正則表達式允許任意數量的數字和只有一個字母數字字符。我希望這也允許任何數量的破折號「 - 」。

+0

爲什麼不使用'',而不是'{0,1}'? – hochl 2012-01-11 00:23:33

+1

任何數量的破折號在哪裏?字符串中的任何地方,包括開始和/或結束?是否有多個連續的破折號?你能編輯這個問題來展示一些應該匹配*和*字符串的字符串的例子嗎? – 2012-01-11 00:28:47

+0

你的正則表達式已經允許任何數量的破折號,因爲它沒有錨定......它將匹配'--------- a'例如。 – fge 2012-01-11 13:17:31

回答

2

只需添加一個破折號:

^([\d-]*[a-z]?|[a-z]?[\d-]*|[\d-]*[a-z]?[\d-]*)$ 

在這裏看到它在行動:http://regexr.com?2vmdq

+0

因爲某些原因,它不匹配,並返回false,如果我輸入類似的東西:「242-2342」 – 2012-01-11 00:13:31

+0

@thesandman - 正則表達式,因爲它是必需的單個字母。我更新了答案...... – 2012-01-11 00:18:39

+0

這是因爲你的模式想要總是匹配字符串末尾的單詞字符。 @JosephSilber,我已經去了:[ - \ d] + [a-z] {0,1} \ d + $我自己。 – Josh 2012-01-11 00:19:56

相關問題