制作一个regex来验证只有一个数字的字符串

make a regex to validate a string with only one number

本文关键字:验证 有一个 数字 字符串 regex 一个      更新时间:2023-09-26

这里是我的问题,在一些项目中,我需要验证一个字符串,它必须是4个字符的长度,并且只包含一个数字,但我不知道它的位置(可以是"er1t"或"4ft",但不能是"sdfd"或"4fd5")

我制作了一个有效的正则表达式:(?:[a-z]'d[a-z]{2}|'d[a-z]{3}|[a-z]{2}'d[a-z]|[a-z]{3}'d),但它没有优化,我找不到如何在正则表达式中搜索字符串中的数字,我使用的是javascript正则表达式。

提前感谢

ekanS

看起来您可以使用

^(?=[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>

相关文章: