Javascript 只有字母数字,但不是所有数字
我知道如何使用正则表达式验证它是否只是没有空格的字母编号:Javascript 只有字母数字,但不是所有数字,javascript,regex,Javascript,Regex,我知道如何使用正则表达式验证它是否只是没有空格的字母编号: /^[0-9a-zA-Z]+$/ 但是我如何向这个正则表达式添加数据,使其不能只包含数字,例如,这是无效的: 08128912382 有什么想法吗?前瞻可以做到: /^(?=.*[a-z])[0-9a-z]+$/i “必须仅包含字母和数字,且至少包含一个字母”相当于“必须包含由数字或字母包围的字母”: 我想补充一点,这个答案展示了一种思考问题的方法,因此编写regexp更简单。这并不是解决这个问题的最好办法。我只是拿了你的东西,
/^[0-9a-zA-Z]+$/
但是我如何向这个正则表达式添加数据,使其不能只包含数字,例如,这是无效的:
08128912382
有什么想法吗?前瞻可以做到:
/^(?=.*[a-z])[0-9a-z]+$/i
“必须仅包含字母和数字,且至少包含一个字母”相当于“必须包含由数字或字母包围的字母”:
我想补充一点,这个答案展示了一种思考问题的方法,因此编写regexp更简单。这并不是解决这个问题的最好办法。我只是拿了你的东西,朝正确的方向推了推 再推几下,你就会得到其他不同的答案(分别由ZER0、Tomalak和OGHaza发布):
-一些数字,后面跟着一个字母,后面跟着一些数字和字母/^[0-9]*[a-zA-Z][0-9a-zA-Z]*$/
-如果您从末尾阅读,则相当于/^[0-9a-zA-Z]*[a-zA-Z][0-9]*$/
-匹配至少包含1个字母的任何字符串的开头/^(?=.[a-z])/
-匹配任何不包含数字的字符串的开头/^(?!\d+$)/
就我个人而言,我特别喜欢第二种解决方案,我认为这是迄今为止尝试的最快的解决方案。所以基本上你需要至少有一个字母在字符串中。在这种情况下,您可以检查是否存在一个或多个字母,前面可能有一个或多个数字,后面可能有两个:
/^[0-9]*[a-z][0-9a-z]*$/i
请注意,如果您对像
“A”
这样的字符串进行测试,它将返回true
,因为在这种情况下,所有的数字都被视为可选的。我认为最优雅的解决方案是使用负前瞻来检查它不仅仅是数字
/^(?!\d+$)[0-9a-zA-Z]+$/
那么,如果字符串包含所有数字,则不返回任何内容?
/^(?!\d+$)[0-9a-zA-Z]+$/