我正在尝试编写一个正则表达式模式,该模式将匹配精确的字母数字(不允许空格和特殊字符)字符串,长度为18个字符。
示例:
1)axspa6577dRTu8Hjg2
- 这应该匹配
2)axspa6577drtu8hjg2
- 这应匹配
3)6577daxspaRtU8hJG2
- 这应该匹配
4)657712873456901338
- 这不应该匹配
5)sedrfutklenfgoemsl
- 这不应该匹配
6)ASDEFRTGJUNLEOFNVY
- 这不应该匹配
7)AS34df67-_%&*()@#!
- 这不应该匹配
我试过下面的一个,但它对我不起作用。
^((?=.*\d)(?=.*[a-zA-Z]).{18})$
它匹配所有特殊字符以及字母数字字符串。
答案 0 :(得分:0)
使用regexp
匹配字母和数字之间的边框,并使用字符串中其他位置的字母和数字匹配:
/^[\da-zA-Z]*([\d][a-zA-Z]|[a-zA-Z][0-9])[\da-zA-Z]*$/
或
/^[[:alnum:]]*([\d][[:alpha:]]|[[:alpha:]][0-9])[[:alnum:]]*$/
答案 1 :(得分:0)
以下正则表达式使用正面向前匹配:
A a = new A();
它匹配任何包含至少一个字母的组,至少一个数字,仅包含字母和数字,长度恰好为18个字符。