如何定义正则表达式并确保它包含某个字符?

时间:2016-12-08 18:26:39

标签: regex regex-lookarounds

我必须定义一个会员ID,它是一个3个字符的字符串,可以有大写/小写字母和数字。

例如AA2和2AA或A22是有效的正则表达式。这与位置无关,我需要确保字符串中至少有一个数字。

当前表达式为([a-z]|[A-Z]|[0-9]){3}。我应该添加什么作为寻找数字的“条件”?

提前谢谢你, 利维乌

2 个答案:

答案 0 :(得分:1)

您可以使用这样的前瞻:

^(?=[A-Za-z]*[0-9])[A-Za-z0-9]{3}$

(?=[A-Za-z]*[0-9])是一个积极的先行者,断言我们在0或更多字母后至少有一个数字。

Read more about lookarounds in regex

答案 1 :(得分:1)

您可以分开条件:
cond.1cond.2只有在两者都为真的情况下才会成立,这意味着在cond.1我们检查字符串是否包含3个字符,而在cond.2我们检查它是否包含一个数字:

var a=/([a-zA-Z]|[0-9]){3}/g
var b=/([0-9]){1,2}/g
if(a && b){
    //return true only if the word contains 3 characters and including at least a number 
}