我需要一个javascript正则表达式验证程序,它可以完全满足以下条件。
提前致谢。
答案 0 :(得分:2)
由于现有的答案存在灾难性的回溯问题,或者过于复杂,这是一个更简单的解决方案:
Unable to load library encrypt.dll
我将/^[a-zA-Z]+(?: [a-zA-Z]+)*$/.test(input)
更改为一个简单的空格,因为\s
匹配空格,制表符,换行符以及其他字符。
solution有灾难性的回溯问题:
\s
您可以尝试使用简单的失败字符串。例如:
/^(?:[a-zA-Z]+\s?)*[a-zA-Z]$/
问题是由于可选/^(?:[a-zA-Z]+\s?)*[a-zA-Z]$/.test("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa8")
导致\s
退化为(?:[a-zA-Z]+\s?)*
,这是典型的灾难性回溯模式(?:[a-zA-Z]+)*
。
答案 1 :(得分:1)
你可以尝试这个:
var re = /^(?:[a-zA-Z]+\s)*[a-zA-Z]+$/
re.test('a') // true
re.test('ab') // true
re.test('a b') // true
re.test('a b c') // true
re.test('a b') // false
re.test('ab ') // false
re.test(' ab') // false
re.test('ab1') // false
答案 2 :(得分:0)
var re = /(([a-zA-Z]+\s*)*[a-zA-Z]+)+/i;
var str = 'sample test';
var m;
if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}