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的角度来这里寻找解决方案的。谢谢。