我知道我的代码是错误的,我正在尝试测试某些字符,只要它们存在于输入字段中的每个字符,它将传递true,否则传递false。
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;
}
答案 0 :(得分:2)
假设你实际上正在传递一个角色(你没有展示如何调用它),这应该有效:
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
如果您要传递一个字符串,并且想知道 all 字符串中的字符是否在此“特殊”列表中,您将需要这样:
function isChar(value) {
if (! value.match(/^[a-z0-9@.\-()#_\$]*$/i)) {
return false;
} else
return true;
}
console.log(isChar("%$_")); // false
console.log(isChar("a$_")); // true
答案 1 :(得分:0)
regexp中有意义的字符需要使用&mcalllist
进行转义。例如,您可以将\
替换为$
,依此类推其他此类字符。所以最终的正则表达式如下:
\$
因为您需要同时转义@.\-()#_\$
和-
。
答案 2 :(得分:0)
\ w类将捕获字母数字。你提供的其余部分(但正确逃脱):
function isChar(value) {
return value.toString().match(/[\w@.\-()#_\$]/) ? true : false
}