1

我使用 preg_match 进行服务器端验证,但我也想有一个客户端。

对于我的 PHP,我允许这些字符:

'/^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/'

如何match()在 JavaScript 中创建白名单?

编辑:

我试过这个,但由于某种原因它不起作用:

我的调试器在 if 语句之前说:

218SyntaxError: Invalid regular expression: range out of order in character class

$('#title').blur(function(){
      input = $('#title').val();
      var invalidChars = /^[^a-z][^a-z\d .:-,!?]+$/i;
    if (!invalidChars.test(input)){
         alert('true');     
         }
      else {
           alert('false');
           }
});
4

4 回答 4

3

以上所有答案都是正确的,尽管只是一个旁注:而不是写作[A-Za-z],一个简单的/[a-z]/i就足够了。这i是一个不区分大小写的标志...

于 2012-04-13T20:38:19.760 回答
2

尝试以下

var text = ...;
if (text.match(/^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/)) {
 ...
}
于 2012-04-13T20:34:09.033 回答
2
var validChars = /^[a-z][a-z\d .:\-,!?]+$/i;
if (validChars.test(myText)){ ... }

如果您只想知道匹配是否存在,则使用regex.test(str)的性能略高。str.match(regex)

或者,如果您看到任何无效字符,您可以提前退出:

var invalidChars = /^[^a-z][^a-z\d .:\-,!?]+$/i;
if (!invalidChars.test(myStr)){
  // we passed
}

这允许正则表达式测试在看到不允许的字符时停止。

于 2012-04-13T20:35:12.323 回答
2

其实恰恰相反:

var regexp = /^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/;

if (regexp.test(text)) {


}
于 2012-04-13T20:35:55.037 回答