在JavaScript中为特殊字符编写正则表达式

时间:2015-10-14 20:25:12

标签: javascript regex

我知道我的代码是错误的,我正在尝试测试某些字符,只要它们存在于输入字段中的每个字符,它将传递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;
}

3 个答案:

答案 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
}