[英]javascript regex to validate alphanumeric text with spaces and reject special characters
我不是正则表达式的专家,但我试着验证一个字段,该字段允许使用带空格的字母数字数据而不是任何其他特殊字符。 其中linkTitle是我在条件中尝试使用以下正则表达式测试的变量的名称
/[^A-Za-z\d\s]/.test(linkTitle)
/[^A-Za-z0-9\s]/.test(linkTitle)
/[^A-Za-z\d ]/.test(linkTitle)
这些都没有奏效...我很想知道正则表达式使用\\ s出了什么问题,似乎是指空白空间以及适合该法案的正则正则表达式。
提前致谢!!
我想你想匹配字符串的开头一次 ,然后使用Positive Closure - 你的一个或多个字母,空格或数字,然后是字符串的结尾。
/^[A-Za-z\d\s]+$/.test(linkTitle)
经测试:
var reg = /^[A-Za-z\d\s]+$/;
["Adam", "Ada m", "A1dam", "A!dam", 'sdasd 213123&*&*&'].forEach(function (str) {
console.log(reg.test(str + "\n"));
});
显示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"));
});
请注意, forEach
不适用于旧浏览器 - 这仅用于测试
这里的三个正则表达式中的任何一个都将匹配[
和]
之间不是一个的任何单个字符,当然不包括^
。
问题可能来自您解释test()
提供的结果的方式。 如果正则表达式匹配字符串linkTitle
,则test
返回true; 这意味着输入中有一个错误的字符(既不是大写字母,也不是小写字母,不是数字而不是空格)。
测试了你的正则表达式:
/[^A-Za-z\d\s]/.test('0 '); // no match, false, input is ok
/[^A-Za-z\d\s]/.test('0 $'); // match, true, input is wrong
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.