Javascript 特定字符串的正则表达式连续验证
我正在尝试用JavaScript为字符串编写正则表达式匹配,比如[任意四位数字][单连字符][三个字母数字字符]。验证应持续进行。这意味着部分马赫数也应该返回真值 我能够验证像[任何四位数字][单连字符]这样的字符串 1232- 4323- 但我无法验证[三个字母数字]部分 以下是前两部分的正则表达式Javascript 特定字符串的正则表达式连续验证,javascript,regex,Javascript,Regex,我正在尝试用JavaScript为字符串编写正则表达式匹配,比如[任意四位数字][单连字符][三个字母数字字符]。验证应持续进行。这意味着部分马赫数也应该返回真值 我能够验证像[任何四位数字][单连字符]这样的字符串 1232- 4323- 但我无法验证[三个字母数字]部分 以下是前两部分的正则表达式 let reg = /^[[0-9.\-]{1,6}]$/; 在字符串(例如)上预期会成功验证 3432-ad3 6548-333 7654-2d1 5649-dse ^-字符串的开头 [
let reg = /^[[0-9.\-]{1,6}]$/;
在字符串(例如)上预期会成功验证
3432-ad3
6548-333
7654-2d1
5649-dse
^-字符串的开头
[0-9]{4}-只允许数字字符0到9,并且只允许其中4个字符
--破折号字符
[0-9a-zA-Z]{3}-允许数字0到9、小写字母a-Z或大写字母a-Z,并且只允许其中的3个。
$-字符串结尾
\d{4}匹配4位数字,
\-匹配-字面意思
\w{3}匹配[a-zA-Z0-9!]中的3个
^\d{4}\-\w{3}$
更新:
\w应匹配除A-Z0-9 so以外的其他字符
^\d{4}\-[a-zA-Z0-9]{3}$
那就更正确了
要匹配在-之后没有任何内容的情况,请执行以下操作:
^\d{4}\-([a-zA-Z0-9]{3})?$
[a-zA-Z0-9]{3}-是与a-zA-Z0-9的3相匹配的群
? 量词与该组中的任何一个都不匹配,或者正好与其中的一个匹配您可以在中设计/修改/更改表达式。您可能希望编写一个类似以下内容的表达式:
[0-9]{4}-[A-Za-z0-9]{3}
正则表达式电路
您可以在以下位置可视化您的表达式:
const regex=/[0-9]{4}-[A-Za-z0-9]{3}/gm;
常量str=`3432-ad3
6548-333
7654-2d1
5649 dse`;
让m;
而m=regex.execstr!==空的{
//这是避免具有零宽度匹配的无限循环所必需的
如果m.index==regex.lastIndex{
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEachmatch,groupIndex=>{
log`find match,group${groupIndex}:${match}`;
};
}为什么不呢?你到底想不出什么?嗨,我不能连接最后一部分字母数字为什么不能?所需正则表达式的哪个部分不起作用?顺便说一句,连字符不应该在允许的字符范围内,因为您可能不想要1-2-34。似乎你只是没有分组你的实际组,你试图在一个字符范围内,在。。。字符范围?我强烈建议您花点时间学习一些正则表达式的基础知识。您好,谢谢您的输入。。这是可行的,但只有在我们键入完整的字符串后,它才会返回true。我所期望的是,即使我们以预期的格式键入字符串的一部分,它也应该返回true。1234-正确,4358-a正确,3343-d33true@LalasMuathasim这是一个完全独立的问题,并且是正交的,因为您现在要求部分正则表达式匹配。你不需要一个正则表达式,你需要一个能够理解输入是否有效的状态机,即使它还没有完成。这是一个完全不同的问题。嗨,谢谢你的意见。。这也可以工作,但只有在键入完整字符串后才会返回true。我所期望的是,即使我们以预期的格式键入字符串的一部分,它也应该返回true。1234-true,4358-a-true,3343-d33-trueah好的,那么你可以修改量词,{3}正好表示其中的3个。但是你也可以把{,3}放在3的前面,表示无。或者如果你想要一个或三个,我相信你可以通过^\d{4}-[a-zA-Z0-9]{3}?$@LalasMuathasim你不是很清楚。是否需要连续验证,例如,此字符串从头到尾可能有效?在我看来,你应该打开一个新问题,扔掉这个问题,因为你当前的要求与你所问的大不相同。@dave Newton。。是的,必须持续验证我已经更新了问题
[0-9]{4}-[A-Za-z0-9]{3}