问题:输入字段花费太多时间来验证输入。
延迟原因:当连续两个空格时,正则表达式验证会花费一些时间。
正则表达式:
'^(([A-Za-z]+[\-\' ]?)*([A-Za-z]+)?)+([A-Za-z]+[\-\' ]?)*([A-Za-z]+)?$'
只要输入maxLength
的{{1}},正则表达式就允许aphostrophe(')和无限数量的单词
错误:
[Violation]“输入”处理程序花了26713毫秒
答案 0 :(得分:3)
您嵌套的重复导致catastrophic backtracking:
([A-Za-z]+[\-\' ]?)*
您可以使用unrolling the loop technique:
[A-Za-z]+([\-\' ][A-Za-z]+)*
中写了类似示例的详细说明。
另一个嵌套重复位于:
(([A-Za-z]+[\-\' ]?)*([A-Za-z]+)?)+
您可以使用类似的技术对其进行优化。