什么是匹配精确的字母数字18字符串的正则表达式?

时间:2015-12-30 07:15:00

标签: ruby-on-rails

我正在尝试编写一个正则表达式模式,该模式将匹配精确的字母数字(不允许空格和特殊字符)字符串,长度为18个字符。

示例:

1)axspa6577dRTu8Hjg2 - 这应该匹配

2)axspa6577drtu8hjg2 - 这应匹配

3)6577daxspaRtU8hJG2 - 这应该匹配

4)657712873456901338 - 这不应该匹配

5)sedrfutklenfgoemsl - 这不应该匹配

6)ASDEFRTGJUNLEOFNVY - 这不应该匹配

7)AS34df67-_%&*()@#! - 这不应该匹配

我试过下面的一个,但它对我不起作用。

^((?=.*\d)(?=.*[a-zA-Z]).{18})$

它匹配所有特殊字符以及字母数字字符串。

2 个答案:

答案 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个字符。