[英]Writing a regex expression for special characters in JavaScript
我知道我的代码是错误的,我正在尝试测试某些字符,只要它们在输入字段中的每个字符都存在,它将通过,否则将通过。
function isChar(value) {
//Trying to create a regex that allows only Letters, Numbers, and the following special characters @ . - ( ) # _
if (!value.toString().match(/@.-()#_$/)) {
return false;
} return true;
}
假设您实际上是在传递一个字符(您没有显示其调用方式),这应该可以工作:
function isChar(value) { if (!value.toString().match(/[a-z0-9@.\\-()#_\\$]/i)) { return false; } else return true; } console.log(isChar('%')); // false console.log(isChar('$')); // true console.log(isChar('a')); // true
相反,如果您要传递一个字符串,并且想知道字符串中的所有字符是否都在此“特殊”列表中,则需要这样做:
function isChar(value) { if (! value.match(/^[a-z0-9@.\\-()#_\\$]*$/i)) { return false; } else return true; } console.log(isChar("%$_")); // false console.log(isChar("a$_")); // true
在正则表达式中有意义的字符需要用\\
进行转义。 因此,例如,您将$
替换$
\\$
,以此类推。 因此最终的正则表达式如下所示:
@.\-()#_\$
由于您需要同时使用-
和$
。
\\ w类将捕获字母数字。 您提供的其余内容(但已正确转义):
function isChar(value) {
return value.toString().match(/[\w@.\-()#_\$]/) ? true : false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.