我只是在寻找一个正则表达式来检查数字和字母是否都存在。
为了澄清查询,正则表达式将用javascript编写并用于验证地址。
发布于 2011-04-06 03:13:29
我会使用一个正则表达式,它可以匹配任何字母后跟任何数字(中间有任何可能的字符),或者数字后面有字母(中间有任何字符):
var hasNumbersAndLetters = function(str) {
var regex = /(?:[A-Za-z].*?\d|\d.*?[A-Za-z])/;
return !!str.match(regex);
};发布于 2011-04-06 02:51:30
运行两个检查要容易得多。
/\pL/ && /\pN/要在一个模式中完成这两个检查,您需要类似于
/\pL.*\pN|\pN.*\pL/s支持零宽度lookaheads的语言可以消除冗余:
/^(?=.*\pL/)(?=.*\pN/)/s ( or /^(?=.*\pL/).*\pN/s )但它很难读懂。
请原谅我没有使用JS的match函数,但这个问题实际上是关于正则表达式的,而我对JS的match函数并不熟悉。
发布于 2011-04-06 02:48:22
如果它是一个不带空格的单词,既有数字又有字母,那么可以假定它们在某个地方相遇-所以如果它匹配字母,那么数字或数字,然后字母我们就匹配了-所以:
([a-zA-Z][0-9]|[0-9][a-zA-Z])
Edit:在可能有空格的地方,您可以使用这样的先行断言
([a-zA-Z](?=.*[0-9])|[0-9](?=.*[a-zA-Z]))https://stackoverflow.com/questions/5556836
复制相似问题