我有一个正则表达式([A-Za-z0-9 ]*){1,60}
。
我与值4503212220033000600034SS SS SS,ndklfjsldfld
...
在20秒(大约)之后,由于我在我的值中使用了,
逗号,它返回false。
为什么需要太多时间来验证?
答案 0 :(得分:2)
由于catastrophical backtracking,您的模式需要花费太多时间。转到regex101.com的 regex调试器页面,查看幕后发生的情况。
现在,您的模式匹配无限数量的字母数字符号和空格1到60次,如果需要验证,这是不合逻辑的。
如果您需要匹配1到60个字母数字字符或空格的字符串,请使用
s.matches("[A-Za-z0-9 ]{1,60}")
答案 1 :(得分:1)
有时正则表达式是个好主意。
但在你的情况下,你似乎对第一个空间前后的东西感兴趣。
那么,为什么需要一个正则表达式,如果你可以调用indexOf('');找到字符串中用于分隔字符串重要部分的位置?
我并不是说使用正则表达式是错误的(并且可能在修复“回溯”问题之后它就是你需要的);但是:太多人正在使用正则表达式仅仅因为存在...