Javascript字符串模式验证

时间:2009-06-16 04:46:15

标签: javascript regex validation pattern-matching

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

8 个答案:

答案 0 :(得分:15)

您可以使用正则表达式解决此问题!

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

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

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

匹配正则表达式返回字符串(如果正常),如果无效,则返回null!

说明:

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

答案 1 :(得分:5)

我会使用正则表达式。

请参阅Mozillla.org的this guide。这个article也很好地介绍了JavaScript中的正则表达式。

答案 2 :(得分:3)

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

答案 3 :(得分: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"

答案 4 :(得分:1)

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

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

validString('test;') //false 

答案 5 :(得分:0)

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

[\\/&;]+

然后它无效。看着: http://www.regular-expressions.info/javascriptexample.html

答案 6 :(得分:0)

您可以使用regular expression

答案 7 :(得分:0)

正如其他人已经回答你可以用regexp来解决这个问题,但是记得还要检查服务器端的值。无法保证用户已激活JavaScript。永远不要相信用户输入!