这里是我的问题,在某些项目中,我需要验证一个字符串,它必须是4个字符的长度,并且包含一个且只有一个数字,但我不知道它的位置(可以是& #34; er1t"或" 4frt"但不是" sdfd"或" 4fd5")
我制作的正则表达式有效:(?:[a-z]\d[a-z]{2}|\d[a-z]{3}|[a-z]{2}\d[a-z]|[a-z]{3}\d)
但它没有优化,我也找不到如何在正则表达式中搜索字符串中的数字,我使用的是javascript正则表达式。
提前感谢,
ekanS
答案 0 :(得分:3)
看起来你可以使用
^(?=[a-z]*\d[a-z]*$)[a-z\d]{4}$
简而言之,我们可以设置(?=\D*\d\D*$)
条件来检查整行/字符串在行/字符串的最开头是否只有1个数字。然后我们可以允许任何小写字母和数字。
如果您打算允许使用大写字母,请将A-Z
添加到字符类,或使用i
选项。
function isValid(code) {
var re = /^(?=[a-z]*\d[a-z]*$)[a-z\d]{4}$/gm;
if ((m = re.exec(code)) !== null) {
document.getElementById("res").innerHTML = document.getElementById("res").innerHTML + "<br>" + m[0] + " is <font color=\"#0000FF\">valid</font>.";
}
else {
document.getElementById("res").innerHTML = document.getElementById("res").innerHTML + "<br>" + code + " is <font color=\"#FF0000\">not valid</font>.";
}
}
isValid('er1t');
isValid('4frt');
isValid('sdfd');
isValid('4fd5');
isValid('ffd5');
document.getElementById("res").innerHTML + "</font>"
<div id="res"><font face="Arial"><b>Valid codes:</b><font face="Tahoma"><div>