【发布时间】:2012-08-02 07:59:12
【问题描述】:
例如:
'1' => NG
'243' => NG
'1av' => OK
'pRo' => OK
'123k%' => NG
我试过了
/^(?=^[^0-9]*$)(?=[a-zA-Z0-9]+)$/
但效果不是很好。
【问题讨论】:
标签: javascript regex
例如:
'1' => NG
'243' => NG
'1av' => OK
'pRo' => OK
'123k%' => NG
我试过了
/^(?=^[^0-9]*$)(?=[a-zA-Z0-9]+)$/
但效果不是很好。
【问题讨论】:
标签: javascript regex
【讨论】:
所以我们知道某处必须至少有一个“字母”字符:
[a-zA-Z]
它之前或之后可以有任意数量的字母数字字符(包括零),所以我们用[a-zA-Z0-9]*在两边填充:
/^[a-zA-Z0-9]*[a-zA-Z][a-zA-Z0-9]*$/
这应该可以解决问题。
【讨论】:
试试这个:
/^(?!^\d*$)[a-zA-Z\d]*$/
编辑:因为这与公认的答案基本相同,所以我会给你一些不同的东西:
/^\d*[a-zA-Z][a-zA-Z\d]*$/
没有前瞻,没有重复的复杂组,它只是验证至少有一个字母字符。这应该很快。
【讨论】:
试试这个:^(?!\d+\b)[a-zA-Z\d]+$ (?!\d+\b) 将避免纯数字,添加 \w+ 然后混合字母和数字。
【讨论】:
\b 是个好主意。这样一来,正则表达式测试之前会因“123#test”之类的无效字符串而失败,因为先行先行失败。使用$ 前瞻不会失败。
这应该可以解决问题,无需向后看:
^(\d*[a-zA-Z]\d*)+$
【讨论】:
试试这个:^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$
【讨论】:
这是严格的字母数字
String name="^[^a-zA-Z]\\d*[a-zA-Z][a-zA-Z\\d]*$";
【讨论】: