在正则表达式下执行时出现错误
<script>
var browser_type = Object.keys($.browser)[0];
alert(browser_type);
</script>
它可能重复了,但我找不到确切的解决方案。
这里是场景。字符串可以接受:
a:它只能在字符串的开头和结尾而不是中间接受双引号/^"?(\w*\d*\s*-*\/*'*)+"?$/
。
b:以下是仅允许使用的内容:字母数字,正斜杠(“ /”),连字符(-),撇号(')和空格。
当我输入以下文本:Hawaii-Newsletter-Wipppp.pdf引发错误时,您可以在此处进行检查:https://regexr.com/
谁能告诉我我在这里做错了吗?
预先感谢
答案 0 :(得分:2)
这里的问题是模式中间的量化组内的可选模式,它导致catastrophic backtracking的输入不匹配。
但是,这不是正则表达式的唯一问题,因为它还允许使用不成对的双引号。
要修复正则表达式使用
/^("?)[\w\s\/'-]+\1$/
请参见regex demo
详细信息
^
-字符串的开头("?)
-第1组:可选的"
[\w\s\/'-]+
-1个或多个字母,数字,_
,空格,/
,'
或-
(如果不是_
必需,将\w
替换为A-Za-z0-9
)\1
-对第1组的后向引用,其匹配值与在第1组中捕获的值相同
$
-字符串的结尾。