我有一个字符串,我想验证该字符串,以便它不能包含某些字符,例如 '/' '\' '&' ';' 等等...我怎样才能一次验证所有这些?
问问题
49738 次
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 回答
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 回答