Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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,下面是一个表达式 const reg = new RegExp(`^([\u4e00-\u9fa5a-zA-Z0-9_-]){1,${num}}$`) 它的设计可以检测一个wold的长度小于num,但是当num大于500+时,它可以卡住浏览器。如何对其进行优化?交替[\u4e00-\u9fa5a-zA-Z0-9_-].正好等于,因为如果第一部分不匹配,它将始终匹配。整个过程简化为^.{1,${num}}$,这与检查str.length>=1&&str.length@VLAZ是一样的,非常感谢。

下面是一个表达式

const reg = new RegExp(`^([\u4e00-\u9fa5a-zA-Z0-9_-]){1,${num}}$`)

它的设计可以检测一个wold的长度小于
num
,但是当num大于500+时,它可以卡住浏览器。如何对其进行优化?

交替
[\u4e00-\u9fa5a-zA-Z0-9_-].
正好等于
,因为如果第一部分不匹配,它将始终匹配。整个过程简化为
^.{1,${num}}$
,这与检查
str.length>=1&&str.length@VLAZ是一样的,非常感谢。它解决了我的问题,我仍然需要一个解决常见问题的方法。我已经修复了删除
|的表达式。
如果您不需要提取任何捕获的数据,只需验证,那么您可以删除捕获组(即
)-这会使正则表达式引擎做更多的工作,如果您不使用它,则与此无关。因此,如果您正在执行
reg.test(string)
,那么可能只需要
^[\u4e00-\u9fa5a-zA-Z0-9_-]{1,${num}}$
即可。如果第一部分不匹配,则替换
[\u4e00-\u9fa5a-zA-Z0-9_-].
正好等于
。整个过程简化为
^.{1,${num}}$
,这与检查
str.length>=1&&str.length@VLAZ是一样的,非常感谢。它解决了我的问题,我仍然需要一个解决常见问题的方法。我已经修复了删除
|的表达式。
如果您不需要提取任何捕获的数据,只需验证,那么您可以删除捕获组(即
)-这会使正则表达式引擎做更多的工作,如果您不使用它,则与此无关。因此,如果您正在执行
reg.test(string)
,那么可能只需要
^[\u4e00-\u9fa5a-zA-Z0-9.-]{1,${num}}$