javascript正则表达式用空格验证字母数字文本并拒绝特殊字符

opt*_*619 7 javascript regex validation

我不是正则表达式的专家,但我试着验证一个字段,该字段允许使用带空格的字母数字数据而不是任何其他特殊字符.其中linkTitle是我在条件中尝试使用以下正则表达式测试的变量的名称

/[^A-Za-z\d\s]/.test(linkTitle)
/[^A-Za-z0-9\s]/.test(linkTitle)
/[^A-Za-z\d ]/.test(linkTitle)
Run Code Online (Sandbox Code Playgroud)

这些都没有起作用......我很想知道正则表达式使用\ s出了什么问题,似乎是指空白,以及适合该法案的正则正则表达式.

提前致谢!!

Ada*_*kis 18

我想你想匹配字符串的开头一次,然后使用Positive Closure-你的一个或多个字母,空格或数字,然后是字符串的结尾.

/^[A-Za-z\d\s]+$/.test(linkTitle)
Run Code Online (Sandbox Code Playgroud)

经测试:

var reg = /^[A-Za-z\d\s]+$/;
["Adam", "Ada m", "A1dam", "A!dam", 'sdasd 213123&*&*&'].forEach(function (str) {
    console.log(reg.test(str + "\n"));
});
Run Code Online (Sandbox Code Playgroud)

表演true,true,true,false,false


或者,如果您想允许空字符串,您可以使用相同的RegEx,但使用Kleene Closure-zero或更多的字母,数字或空格

var regAllowEmpty = /^[A-Za-z\d\s]*$/;
["", "Adam", "Ada m", "A1dam", "A!dam", 'sdasd 213123&*&*&'].forEach(function (str) {
    console.log(regAllowEmpty.test(str + "\n"));
}); 
Run Code Online (Sandbox Code Playgroud)

请注意,forEach这不适用于旧浏览器 - 这仅用于测试