首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式,用于检查字段是否同时包含数字和字母

问正则表达式,用于检查字段是否同时包含数字和字母
EN

Stack Overflow用户
提问于 2011-04-06 02:44:25
回答 5查看 5.1K关注 0票数 1

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

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

EN

回答 5

Stack Overflow用户

发布于 2011-04-06 03:13:29

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

代码语言:javascript
复制
var hasNumbersAndLetters = function(str) {
  var regex = /(?:[A-Za-z].*?\d|\d.*?[A-Za-z])/;
  return !!str.match(regex);
};
票数 3
EN

Stack Overflow用户

发布于 2011-04-06 02:51:30

运行两个检查要容易得多。

代码语言:javascript
复制
/\pL/ && /\pN/

要在一个模式中完成这两个检查,您需要类似于

代码语言:javascript
复制
/\pL.*\pN|\pN.*\pL/s

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

代码语言:javascript
复制
/^(?=.*\pL/)(?=.*\pN/)/s    ( or /^(?=.*\pL/).*\pN/s )

但它很难读懂。

请原谅我没有使用JS的match函数,但这个问题实际上是关于正则表达式的,而我对JS的match函数并不熟悉。

票数 1
EN

Stack Overflow用户

发布于 2011-04-06 02:48:22

如果它是一个不带空格的单词,既有数字又有字母,那么可以假定它们在某个地方相遇-所以如果它匹配字母,那么数字或数字,然后字母我们就匹配了-所以:

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

Edit:在可能有空格的地方,您可以使用这样的先行断言

代码语言:javascript
复制
([a-zA-Z](?=.*[0-9])|[0-9](?=.*[a-zA-Z]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5556836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档