【问题标题】:Need to test JS regex [closed]需要测试 JS 正则表达式 [关闭]
【发布时间】:2016-06-16 16:06:56
【问题描述】:

当我输入我的输入时,文本会出现在图像上。我想让代码像这样工作:

当用户键入正则表达式识别的字符时,然后将其放在图像上,否则只会抛出一些错误或根本不让它在输入字段中键入。

这是正则表达式:[A-Z0-9a-z&,.-/()@*+!?"':; -]

我正在尝试这样实现它:

$("#firstText").keyup(function () {
  var value = $(this).val().toUpperCase();
  var regex = "[A-Z0-9a-z&,.-/()@*+!?"':; -]";

  if(regex.test(value))
  {
    $(".zetin16").text(value);
  } else {
    alert('this is bad');
  }
});

但我收到此错误:Uncaught SyntaxError: Invalid or unexpected token

在这一行:var regex = "[A-Z0-9a-z&,.-/()@*+!?"':; -]";

提前感谢您的帮助。

更新

正则表达式现在工作正常。现在,当正则表达式与字符不匹配时,我想防止在输入中输入字符。这是我目前的代码:

$("#firstText").keyup(function(e) {
    var value = $(this).val().toUpperCase();
    var regex = new RegExp(/[A-Z0-9a-z&,.-/()@*+!?"':; -]/);

    if (regex.test(value)) {
        $(".zetin16").text(value);
    } else {
        e.preventDefault();
        return false;
    }
});

【问题讨论】:

  • 你的字符串中有一个双引号,它会提前终止。语法突出显示是您的朋友。
  • 首先像这样更改正则表达式 var regex = "[A-Z0-9a-z&,.-/()@*+!?:; -]";

标签: javascript jquery regex


【解决方案1】:

对于正则表达式,使用正斜杠作为分隔符。如果正斜杠作为正则表达式本身的文字出现,请将其转义:

var regex = /[A-Z0-9a-z&,.-\/()@*+!?"':; -]/;

参考:JavaScript regex replace - escaping slashes

(原字符串的问题在于它包含双引号,同时用双引号分隔)。

【讨论】:

    【解决方案2】:

    您看到的确切错误是因为您将变量定义为双引号字符串,其中包含未转义的双引号。

    它不应该是一个字符串。应该是这样的正则表达式。

    var regex = /[A-Z0-9a-z&,.-/()@*+!?"':; -]/;
    

    【讨论】:

    • 好的,我现在没有收到任何错误。但是是否有一些功能可以防止输入正则表达式不可用的字符? :)
    • @feknuolis This 可以提供帮助。
    • @feknuolis 或this
    【解决方案3】:

    尝试使用这种模式来使用正则表达式

    var regex = "['A-Z0-9a-z&,.-/()@*+!?':; -]";
    
    var reg =new RegExp(regex)
    
    var val ="asss"
    
    reg.test(val)
    

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2011-04-30
      • 2016-11-26
      • 2013-04-06
      相关资源
      最近更新 更多