對於正則表達式我還是很新的,基本上我需要做的是創建一個接受數字和字母但不允許輸入連續字符的規則。正則表達式拒絕連續字符
例如:ABCD - >確定,ABBCD - >壞
我有大部分工作,但我無法弄清楚的部分正是我怎麼禁止連續字符?
到目前爲止我的代碼:
/^[A-Za-z-0-9]{8,15}$/i
對於正則表達式我還是很新的,基本上我需要做的是創建一個接受數字和字母但不允許輸入連續字符的規則。正則表達式拒絕連續字符
例如:ABCD - >確定,ABBCD - >壞
我有大部分工作,但我無法弄清楚的部分正是我怎麼禁止連續字符?
到目前爲止我的代碼:
/^[A-Za-z-0-9]{8,15}$/i
>>> r = /^((\w)(?!\2))+$/i
>>> r.exec('abbcd')
null
>>> r.exec('abcd')
[ 'abcd',
'd',
'd',
index: 0,
input: 'abcd' ]
的\2
部分是一個反向引用,並取字符最後比賽由集團(\w)
匹配。所以負面的預測(?!\2)
的意思是「沒有跟隨角色本身。」如果我在這裏使用的某些術語對您不熟悉,您應該在MDN's Regular Expression Documentation上查找它們。
要接受字符串的長度,限制在8-15個字符作爲OP,改變+
到{8,15}
:
>>> r = /^((\w)(?!\2)){8,15}$/i
>>> r.exec('abcd')
null
>>> r.exec('abcdabcd')
[ 'abcdabcd',
'd',
'd',
index: 0,
input: 'abcdabcd' ]
起初我覺得Z和0之間減號強調,如果它是如此你最好使用'[\ w]'而不是'[A-Za-z_0-9]' – shift66 2012-04-25 07:48:07