繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM