【问题标题】:allow quotes in regex允许正则表达式中的引号
【发布时间】:2011-08-10 16:51:54
【问题描述】:

这是我的 javascript 正则表达式,仅匹配拉丁语或希伯来语字符:

/^(?:[\u0590-\u05FF\uFB1D-\uFB40 ]+|[\w ]+ )$/i

为了允许引用,我需要添加什么术语?例如,如果输入是:abc"d。它应该通过正则表达式测试而不发出警报。

更新

我想如果我给你完整的代码会更好:

var RE_MY_REGEX = /^(?:[\u0590-\u05FF\uFB1D-\uFB40 ]+|[\w ]+ )$/i,
    myValue = 'abc"d';
if (!RE_MY_REGEX.test(myValue )) {
        alert("failed");
}
else
{
 alert("success");
}

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以在括号中使用引号 ("):

    /^(?:[\u0590-\u05FF\uFB1D-\uFB40 "]+|[\w "]+ )$/i
    

    无论如何,我对您的正则表达式中的最后一个空格字符有疑问...不应该是这样的:

    /^(?:[\u0590-\u05FF\uFB1D-\uFB40 "]+|[\w "]+)$/i
    

    如果引号可以出现在希伯来语文本中,您也应该把引号放在那里。我不确定在写希伯来语时是否使用与写拉丁语时完全相同的引号,或者它们的 unicode 可以是什么。因此,您可以事先在希伯来语文本中检查这一点。

    如果上面的正则表达式不起作用,我建议一步一步来:简化它并用纯拉丁字符串检查它;然后修改正则表达式以仅考虑希伯来语并检查它;不带和带引号等...

    【讨论】:

    • 引号是否出现在希伯来字符中?我怀疑这取决于报价,看看这个正则表达式测试器:regexpal.com(另外,看看我的编辑......)
    • 是的,我的 quoets 也可以出现在希伯来字符中,如果这种情况下测试失败......我该怎么办?
    • 如果引号可以出现在希伯来语文本中,你也应该把引号放在那里。请阅读我的编辑。我建议您使用 regexpal.com 网站进行一些基本测试...我不知道如何从我的 keyb 生成希伯来字符,否则可以自己做...
    【解决方案2】:

    右括号 ) 前有一个额外的空格。以下代码对我来说工作正常,并以“成功”发出警报。

    var RE_MY_REGEX = /^(?:[\u0590-\u05FF\uFB1D-\uFB40 ]+|["\w ]+)$/i;
    myValue = 'abc"d';
    if (!RE_MY_REGEX.test(myValue)) {
       alert("failed");
    }
    else {
       alert("success");
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 2023-03-25
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多