下面列出的这个正则表达式几乎满足了我的所有要求,只有一个缺失:
必须至少包含3个强制字母数字字符,不包括特殊字符。
/^(?!(?:[ \d]+|[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ ]+)$)(?!(.)\1+$)(?!.*([a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9])\2{3})(?!.*[^a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9\n]{2})(?=(?:[^a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9\n]*[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9]){3})(?!.*[Pp]+(OST|ost)*\.*\s*[Oo0]*(FFICE|ffice)*\.*\s*[Bb]*\.*\s*[Oo0]*\.*\s*[Xx].*)[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9\ *"(:,\/.\\;&)\[\]_+#'-]{3,40}$/
以下是我的验收标准:
AAA
,但允许Haaadoop
Haaadoop
,但不允许Haaaadoop
。AA
,但不允许AAA
。111
或111111
A-B
,不允许A- -B
或A-&B
#&()_+[]:;',/.-"*
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞߟàáâãäåæçАаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяèéêëìíîïðñòóôõöøùúûüýþÿ
应接受以下测试用例
Haaadoop 123
A-B 123
123 âãäåæçèéêëìíî
нОоСсТт 123
123 нОоСсТт
нОр123Тт
123 Haaadoop
123 A-B
âãäåæçèéêëìíî 123
âãäåæ123çèéêëìíî
111 asdasdbhb
1111 asdwebqfbwejbf
âãäåæçèéêëìíî 123
1111111111 adfsdfdsf
应拒绝以下测试用例:
Haaaaadoop 123
A- -B 123
A-&B123
AAA
abcd
123
123 Haaaaadoop
123 A- -B
2 a
答案 0 :(得分:0)
注1:重新编号为参考的标准
注2:我最初会使用PCRE语法来支持x
修饰符。 JavaScript风格的正则表达式将在帖子的末尾出现。
几乎从字面上来说,您的标准可以表示如下(评论中的标准参考):
^
(?=(?:.*[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9]){3,}) # 1 & 2
(?!.*\b([a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ])\1+\b) # 3
(?!.* ([a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ])\2{3,}) # 4
(?! [a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ]{3,}$) # 5
(?=([0-9])\3+$|(?!\d+$)) # 6 + implied by the test data "no number
# alone on a string unless all digits are
# the same" rule
(?!.*[\ *"(:,\/.\\;&)\[\]_+#'-]{2,}) # 7
[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9\ *"(:,\/.\\;&)\[\]_+#'-]{3,40}$
正则表达式不包括"邮局"限制出现在原始表达式中,因为它在标准列表中缺失但可以轻松添加。
演示:https://regex101.com/r/DOM8C0/1
JavaScript版本:
^(?=(?:.*[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9]){3,})(?!.*\b([a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ])\1+\b)(?!.*([a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ])\2{3,})(?![a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ]{3,}$)(?=([0-9])\3+$|(?!\d+$))(?!.*[\ *"(:,\/.\\;&)\[\]_+#'-]{2,})[a-zA-ZÀ-ÖØ-ߟà-çа-яА-ЯЁёè-ÿ0-9\ *"(:,\/.\\;&)\[\]_+#'-]{3,40}$