Javascript正则表达式应该允许空字符串和非空字符串,但它不允许';T
我有一个正则表达式,它允许字符串为空。如果它不是空的,字符串可能只包含字母和空格。但它可能不会以空格开始或结束 此RegExp应执行以下操作:Javascript正则表达式应该允许空字符串和非空字符串,但它不允许';T,javascript,regex,Javascript,Regex,我有一个正则表达式,它允许字符串为空。如果它不是空的,字符串可能只包含字母和空格。但它可能不会以空格开始或结束 此RegExp应执行以下操作: ^(?![a-zA-Z]*[a-zA-Z]*$ 我在这里测试过: 但是,当我在js中实现这一点时,它不允许字符串为空 这是密码 function validatePreposition(name) { string = string = document.forms['form'][name].value; pattern = new R
^(?![a-zA-Z]*[a-zA-Z]*$
我在这里测试过:
但是,当我在js中实现这一点时,它不允许字符串为空
这是密码
function validatePreposition(name) {
string = string = document.forms['form'][name].value;
pattern = new RegExp('^(?! )[a-zA-Z]*[a-zA-Z ]*$');
checkString(name, pattern, string);
}
function checkString(name, pattern, string) {
if(!pattern.test(string)) {
error[name] = 1;
} else {
error[name] = 0;
}
printErrors();
}
如何更改我的代码以允许使用空字符串?尝试使用此选项:
pattern = /(^[a-zA-Z]+(\s*[a-zA-Z]+)*$)|(^$)/;
它将测试一个空字符串,或者测试一个以a-Z开头的字符串,该字符串中可能有无限多的空格,但必须以a-Z结尾
你可以在这里看到它的作用:也可以使用它:
if (subject.match(/^(?=[a-z ]*$)(?=\S)(?=.*\S$)/i)) {
// Successful match
}
只使用lookaheads。尽管我会选择@Marcus answer 什么是
(?!)
?@Jergason消极前瞻:我不知道你的意思<代码>/^(?![a-zA-Z]*[a-zA-Z]*$/.test(“”===true@OrangeTux不客气:)不要忘了单击此答案左侧的复选框轮廓,将其标记为已接受的答案