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}}$
。