正则表达式检查字段是否包含数字和字母

时间:2011-04-05 18:44:25

标签: javascript regex

我只是在寻找一个正则表达式来检查并查看数字和字母是否都存在。

为了澄清查询,正则表达式将用javascript编写并用于验证地址。

5 个答案:

答案 0 :(得分:3)

我会使用一个正则表达式,它匹配任何数字后跟任何数字(中间有任何可能的字符)或数字然后字母(中间有任何内容):

var hasNumbersAndLetters = function(str) {
  var regex = /(?:[A-Za-z].*?\d|\d.*?[A-Za-z])/;
  return !!str.match(regex);
};

答案 1 :(得分:1)

更容易进行两次检查。

/\pL/ && /\pN/

要在一种模式中进行两种检查,您需要类似

的内容
/\pL.*\pN|\pN.*\pL/s

支持零宽度前瞻的语言可以消除冗余:

/^(?=.*\pL/)(?=.*\pN/)/s    ( or /^(?=.*\pL/).*\pN/s )

但是阅读起来比较困难。

请原谅我没有使用JS的匹配函数,但问题是关于正则表达式,而且我不熟悉JS的匹配函数。

答案 2 :(得分:0)

如果它是一个单词你没有空格,有数字和字母,可以假设它们在某处接触 - 所以如果它匹配字母,那么数字或数字然后字母我们有匹配 - 所以:

([a-zA-Z][0-9]|[0-9][a-zA-Z])


编辑:可能有空格的地方,你可以使用像这样的先行断言

([a-zA-Z](?=.*[0-9])|[0-9](?=.*[a-zA-Z]))

答案 3 :(得分:0)

看到你想验证一个地址

通过正则表达式答案删除,因为javascript没有Unicode支持,但匹配单个字符除外http://www.regular-expressions.info/unicode.html

答案 4 :(得分:-1)

这应该这样做:

^[\w]*[^\W_][\w]*$