Javascript字符串模式验证

Javascript字符串模式验证,javascript,regex,validation,pattern-matching,Javascript,Regex,Validation,Pattern Matching,我有一个字符串,我想验证该字符串,以便它不能包含某些字符,如“/”\“&;”等如何一次验证所有这些内容?我会使用正则表达式 见mozilla.org。这也很好地介绍了JavaScript中的正则表达式。是一篇关于JavaScript验证的好文章。请记住,您还需要在服务器端进行验证。Javascript验证可以很容易地规避,因此决不能出于安全原因使用它,例如防止SQL注入或XSS攻击。您可以使用regex。例如,如果字符串匹配: [\\/&;]+ 那么它是无效的。看看: 您可能会使用一个

我有一个字符串,我想验证该字符串,以便它不能包含某些字符,如“/”\“&;”等如何一次验证所有这些内容?

我会使用正则表达式


见mozilla.org。这也很好地介绍了JavaScript中的正则表达式。

是一篇关于JavaScript验证的好文章。请记住,您还需要在服务器端进行验证。Javascript验证可以很容易地规避,因此决不能出于安全原因使用它,例如防止SQL注入或XSS攻击。

您可以使用regex。例如,如果字符串匹配:

[\\/&;]+
那么它是无效的。看看:

您可能会使用一个。

您可以用正则表达式解决这个问题

mystring = "hello"
yourstring = "bad & string"

validRegEx = /^[^\\\/&]*$/

alert(mystring.match(validRegEx))
alert(yourstring.match(validRegEx))
如果与正则表达式匹配,则返回字符串(如果是ok),如果无效,则返回null

说明:

  • JavaScript正则表达式文本的分隔方式类似于字符串,但使用斜杠(
    /
    )而不是引号(
  • validRegEx
    的第一个和最后一个字符使其与整个字符串匹配,而不仅仅是部分字符串,克拉将其固定在开头,美元符号固定在结尾
  • 括号之间的部分(
    [
    ]
    )是一个字符类,它匹配类中的任何字符。其中的第一个字符(克拉)表示该类被否定,以匹配字符类中未提及的字符。如果省略了该字符,则该类将匹配其指定的字符。
    • 接下来的两个序列,
      \\
      \/
      是反斜杠转义的,因为反斜杠本身就是其他东西的转义序列,而正斜杠会让解析器误认为它已经到达正则表达式的末尾(与字符串中的转义引号完全相似)
    • 符号(
      &
      )没有特殊含义,不可替换
  • 剩下的字符是克莱恩星(
    *
    )这意味着前面的任何字符都应该被匹配零次或多次,这样字符类将吃掉尽可能多的不是正斜杠或反斜杠或符号的字符,如果找不到,则不包含任何字符。如果要确保匹配的字符串不是空的,可以将其替换为加号(
    +

您可以使用带有正则表达式的测试方法:

function validString(input){
    return !(/[\\/&;]/.test(input));
}

validString('test;') //false 
您可以学习正则表达式,或者(如果一次只检查一个字符,可能会更简单)您可以有一个字符列表,然后使用某种
清理
函数从字符串中删除每个字符

var myString = "An /invalid &string;";
var charList = ['/', '\\', '&', ';']; // etc...

function sanitize(input, list) {
    for (char in list) {
        input = input.replace(char, '');
    }
    return input
}
那么:

sanitize(myString, charList) // returns "An invalid string"

正如其他人回答的那样,您可以使用regexp解决这个问题,但请记住还要检查服务器端的值。不保证用户已激活JavaScript。永远不要信任用户输入!

与其检查不允许的字符黑名单,不如根据字符白名单检查字符串允许的rs,例如仅允许字母数字字符。嗯……除了JavaScript正则表达式没有
match
函数,只有
test
@LawrenceDol:
.match()
用于
字符串
,而不是
RegExp
。当您尝试它时会发生什么情况?@Singe:好的,我错过了这个微妙之处。我是从regex的角度来这里寻找解决方案的。谢谢。