Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 特定字符串的正则表达式连续验证_Javascript_Regex - Fatal编程技术网

Javascript 特定字符串的正则表达式连续验证

Javascript 特定字符串的正则表达式连续验证,javascript,regex,Javascript,Regex,我正在尝试用JavaScript为字符串编写正则表达式匹配,比如[任意四位数字][单连字符][三个字母数字字符]。验证应持续进行。这意味着部分马赫数也应该返回真值 我能够验证像[任何四位数字][单连字符]这样的字符串 1232- 4323- 但我无法验证[三个字母数字]部分 以下是前两部分的正则表达式 let reg = /^[[0-9.\-]{1,6}]$/; 在字符串(例如)上预期会成功验证 3432-ad3 6548-333 7654-2d1 5649-dse ^-字符串的开头 [

我正在尝试用JavaScript为字符串编写正则表达式匹配,比如[任意四位数字][单连字符][三个字母数字字符]。验证应持续进行。这意味着部分马赫数也应该返回真值

我能够验证像[任何四位数字][单连字符]这样的字符串 1232- 4323- 但我无法验证[三个字母数字]部分

以下是前两部分的正则表达式

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}