我只是在寻找一个正则表达式来检查并查看数字和字母是否都存在。
为了澄清查询,正则表达式将用javascript编写并用于验证地址。
答案 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]*$