2013-03-11 54 views
2

我有這個正則表達式只允許字母數字字符。正則表達式來檢查至少3個字符?

如何檢查字符串是否至少包含3個字母字符。

我現在的正則表達式,

if(!/^[a-zA-Z0-9]+$/.test(val)) 

我想執行字符串,以確保至少有3個連續的字母字符以及左右;

111 // false 
aaa1 // true 
11a // false 
bbc // true 
1a1aa // false 
+3

使用'{3,}'而不是'+' – 2013-03-11 14:26:19

+0

@ka可以在任何字符串中至少匹配三個_characters_而不是至少三個_letters_。 – 2013-03-11 14:28:07

+0

它不起作用111仍然被接受。 – Griff 2013-03-11 14:28:12

回答

10

要強制執行的任何地方3個字母字符,

/(.*[a-z]){3}/i 

應該足夠了。

編輯。啊,你編輯了你的問題,說三個字母字符必須是連續的。我也看到你可能想強制執行所有的字符都應該匹配你的「接受」字符之一。然後,先行可能是乾淨的解決方案:

/^(?.*[a-z]{3})[a-z0-9]+$/i 

請注意,我用的是不區分大小寫的修飾符/i爲了避免寫a-zA-Z

替代方案。您可以閱讀更多關於lookaround assertions here。但是在這個階段它可能會有點凌亂。下面是您可能會發現更容易分解來講你已經知道一種替代方案:

/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i 
+0

謝謝你這樣一個教育性的答案! – Griff 2013-03-11 14:41:42

0

+表示「1次或1次發生」。

{3}表示「發生3次」。

{3,}表示「發生3次或更多次」。

+也可以寫成{1,}。也可以寫成{0,}

+0

我不認爲這回答了問題,它回答了對本身不回答問題的問題的評論。 – 2013-03-11 14:30:39

3

這應該做的工作:

^([0-9]*[a-zA-Z]){3,}[0-9]*$

它檢查至少3個「零或更多的數字+ 1個阿爾法序列+零或更多的數字。

0

你想匹配零個或多個數字,然後連續3個字母,然後任何其他數字的數字?

/\d*(?:[a-zA-Z]){3,}\d*/

-1

假設你正在使用JavaScript,請使用此:

/[a-zA-Z]{3,}/ 

這將在字符串的任何部分匹配至少有三個字符不是至少三個字母。

相關問題