允许正则表达式中的引号

时间:2011-08-10 08:20:41

标签: javascript regex

这是我的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");
}

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

答案 1 :(得分:0)

在关闭括号)之前,您有一个额外的空格。以下代码对我来说工作正常并提醒“成功”。

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