正则表达式允许在字符中的任何位置允许两个数字(0-9)

时间:2014-09-08 06:09:23

标签: regex

我是regex世界的新手,我正在尝试为以下内容提供正则表达式。

用户可以按以下方式使用

  1. goodyzain
  2. 1goodyzain
  3. goody1zain
  4. goodyzain1
  5. goodyzain19
  6. 1goodyzain9
  7. ...等

    用户最多可以在名称中使用两个整数b / w 0-9 ...我试过跟随正则表达式...

    (?:\d{0,2}+[a-zA-Z]|[a-zA-Z]+\d{0,2})|[a-zA-Z]
    

    适用于案例1,4,5,但对其他人不适用......帮助将是明显的...... :)

3 个答案:

答案 0 :(得分:1)

尝试使用否定模式:

$output = preg_replace( '/[^0-9]/', '', $string );

然后计算 $ output 长度,如果你有> 2那么它的格式是错误的

if (2 > preg_replace('/[^0-9]/', '', $string)) {
    // ok
} else {
    // not ok, more than 2 digits
}

答案 1 :(得分:1)

试试这个:

^(?:[a-zA-Z]*\d){0,2}[a-zA-Z]*$

答案 2 :(得分:0)

(?!([a-zA-Z]*?\d){3,})^[a-zA-Z\d]+$

这是有效的。参见演示。使用否定前瞻。

http://regex101.com/r/iX5xR2/7