regex JavaScript字符串模式验证

0kjbasz6  于 12个月前  发布在  Java
关注(0)|答案(8)|浏览(139)

我有一个字符串,我想验证该字符串,使它不能包含某些字符,如“/""&";“等等……我怎么能一下子验证所有这些呢?

72qzrwbm

72qzrwbm1#

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

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

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

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

如果匹配正则表达式,则返回字符串,如果无效,则返回null!
说明:

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

xdyibdwo2#

我会使用正则表达式。
参见Mozilla. org上的this guide。这个article也给予了JavaScript中正则表达式的一个很好的介绍。

yh2wf1be

yh2wf1be3#

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

bkkx9g8r

bkkx9g8r4#

你可以学习正则表达式,或者(如果你一次只检查一个字符,可能更简单)你可以有一个字符列表,然后用某种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"
mcdcgff0

mcdcgff05#

你可以使用test方法和正则表达式:

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

validString('test;') //false
bkkx9g8r

bkkx9g8r6#

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

[\\/&;]+

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

hvvq6cgz

hvvq6cgz8#

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

相关问题