Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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/17.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,我正在尝试运行以下正则表达式((\s)+.$)([A-Z]{2,3}(?:-[0-9]+){3}))(\s)+.$,但我得到的字符串超时值大约为100多个字符。我在JS中运行了这个正则表达式,还尝试在regex101.com中运行它 我试图匹配的是“ABC-12312-121231-12312”,它可以由任何字符串启动和跟随 以下是我的JS代码: const regexTransaction = /^(.*\s)*(([A-Z]{2,3}(?:-[0-9]+){3}))((\s)+.*)?$

我正在尝试运行以下正则表达式((\s)+.$)([A-Z]{2,3}(?:-[0-9]+){3}))(\s)+.$,但我得到的字符串超时值大约为100多个字符。我在JS中运行了这个正则表达式,还尝试在regex101.com中运行它

我试图匹配的是“ABC-12312-121231-12312”,它可以由任何字符串启动和跟随

以下是我的JS代码:

const regexTransaction   = /^(.*\s)*(([A-Z]{2,3}(?:-[0-9]+){3}))((\s)+.*)?$/
var resTransaction       = new RegExp(regexTransaction,'g').exec(encodedMsg)

console.log(resTransaction)

我真的非常感谢您的帮助。

这两个功能似乎都相当出色。第一个假设每个块中有已知数量的数字(5、6、5)。第二个是原始正则表达式的清理版本,它接受3个由连字符分隔的任意数字序列

//假设ABC-5位-6位-5位
常量regex=/([A-Z]{2,3}-[\d]{5}-[\d]{6}-[\d]{5})/g;
//你原来的正则表达式去掉了不必要的东西。
//请注意,这捕获了第一个表达式没有得到的第二个附加999的项。
常量regex2=/([A-Z]{2,3}(?:-[0-9]+){3})/g;
常量输入="asfsfdasABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312999AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSDFDSASFSFDASBC-12312-121231-12345AFSASSFSDFDSASFSFSFDASBC-12312-121231-12312AFSASSDFDSFSFSFSFSFDASBC-12312-121231-12312AFSASSDFDSFSFSFSFDASBC-12312-12312-12312-12312-121231-12312AFSASSFSDFDSASFSFDASABC-99999-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSASFDASBC-12312-121231-12312AFSASSFSDFDSDSFSFSFSFSDSASBC-12312-121231-12312AFSASSFSDFDSFSFSFSFSFSASBC-12312-12312-12312AFSAFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSDFASBC-12312-12312-12312dsasfsfdasABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSFSFSFSFDASBC-12312-121231-12312AFSASSFSDFDSFSFSFSFDASBC-12312-121231-12312-12312AFSASSFSFSFSFSFSFSFSFSFSFSFSFSFSFDASBC-12312-12312-12312-1231221231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSASFSFDASBC-12312-121231-12312AFSASSFSDFDSASFSFSFSDSASBC-12312-121231-12312AFSASSFSDFDSFSDSFSFSFSFSDSASBC-12312-121231-12312AFSASSFSDFDSFSFSFSFSFSFSFSFSFSFSFSFSASBC-12312-12312-12312-12312AFSAFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSFSDS12312-12312-12312-12312-12312SASFFDASABC-12312-121231-12312AFSASFDFDSASFSFDASABC-12312-121231-12312AFSASFDSASFSFDASBC-12312-121231-12312AFSASFDSASFSFSFSFDASBC-12312-121231-12312AFSASFDSASFSFSFSFDASBC-12312-121231-12312AFSASFDSFSFSFSFSFSFDASBC-12312-121231-12312AFSASFDSDSFSFSFSFSFSFSFDASBC-12312-12312-12312-123121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFDASABC-12312-121231-12312AFSASSFSDFDSASFSFSFSFSASABC-12312-12312-121231-12312AFSASSDFDSFSDFDSFSFSFSFSFSASABC-12312asfsfdasABC-12312-121231-12312AFSASFDFDSASFSFDASABC-12312-121231-12312AFSASFDSASFSFDASABC-12312-121231-12312AFSASFDSASDFDS”;
console.log(input.match(regex));

console.log(input.match(regex2));
您需要捕获字符串中的任何内容,还是只需要匹配整个序列?@rayhatfield我想匹配整个序列,但是这个序列
ABC-1234-1234-1234
可以后跟任何内容。它也可以以任何内容开头,例如“Lorem ABC-1234-1234-1234 Lorem”“。它总是2-3字母-5位数-6位数-5位数吗?@rayhatfield它将是2-3字母-任意位数-任意位数-任意位数。”