3

我有一个字符串,我想验证该字符串,以便它不能包含某些字符,例如 '/' '\' '&' ';' 等等...我怎样才能一次验证所有这些?

4

8 回答 8

16

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

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

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

alert(mystring.match(validRegEx))
alert(yourstring.match(validRegEx))

如果匹配正则表达式,则返回字符串,如果它是无效的,则返回 null!

解释:

  • JavaScript RegEx 文字像字符串一样被分隔,但使用斜杠 ( /'s) 而不是引号 ( "'s)。
  • validRegEx导致它匹配整个字符串 的第一个和最后一个字符,而不仅仅是部分,克拉将它锚定到开头,美元符号到结尾。
  • 括号 ([]) 之间的部分是一个字符类,它匹配任何字符,只要它在该类中。其中的第一个字符是克拉,表示该类被否定,以匹配字符类中未提及的字符。如果它被省略,该类将匹配它指定的字符。
    • 接下来的两个序列,\\并且\/是反斜杠转义,因为反斜杠本身将是其他东西的转义序列,而正斜杠会使解析器误以为它已经到达正则表达式的末尾,(与在字符串)。
    • 与号( &) 没有特殊含义,并且未转义。
  • 剩下的字符kleene 星号 ( *) 表示无论前面的任何内容都应该匹配零次或多次,以便字符类将吃掉尽可能多的不是正斜杠或反斜杠或 & 符号的字符,如果找不到任何字符,则不包括任何字符. 如果要确保匹配的字符串不为空,可以用加号 ( +) 替换它。
于 2009-06-16T04:56:42.323 回答
5

我会使用正则表达式。

请参阅来自 Mozilla.org 的本指南。这篇文章也很好地介绍了 JavaScript 中的正则表达式。

于 2009-06-16T04:52:37.170 回答
4

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

于 2009-06-16T04:52:41.697 回答
2

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

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"
于 2009-06-16T04:58:30.467 回答
1

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

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

validString('test;') //false 
于 2009-06-16T04:56:53.663 回答
0

您可以使用正则表达式。例如,如果您的字符串匹配:

[\\/&;]+

那么它是无效的。看: http ://www.regular-expressions.info/javascriptexample.html

于 2009-06-16T04:53:18.310 回答
0

您可能可以使用正则表达式

于 2009-06-16T04:53:23.660 回答
0

As the others have answered you can solve this with regexp but remember to also check the value server-side. There is no guarantee that the user has JavaScript activated. Never trust user input!

于 2009-06-16T05:00:52.977 回答