Javascript 如何正则表达式匹配整个字符串而不是单个字符
我正试图按照中的说明,使用JavaScript正则表达式Javascript 如何正则表达式匹配整个字符串而不是单个字符,javascript,regex,validation,arabic,Javascript,Regex,Validation,Arabic,我正试图按照中的说明,使用JavaScript正则表达式/[\u0600-\u06FF]/对阿拉伯字母字符输入实现“alpha”验证。我只接受阿拉伯字母字符和空格 现在的问题是它给出了以下结果: r = /[\u0600-\u06FF]/ r.test("abcd") // false - correct r.test("@#$%^") // false - correct r.test("س") // true - correct r.test("abcd
/[\u0600-\u06FF]/
对阿拉伯字母字符输入实现“alpha”验证。我只接受阿拉伯字母字符和空格
现在的问题是它给出了以下结果:
r = /[\u0600-\u06FF]/
r.test("abcd") // false - correct
r.test("@#$%^") // false - correct
r.test("س") // true - correct
r.test("abcd$$#5س") // true - should be false
r.test("abcdس") // true - should be false
如果给出了一个匹配字符,那么它将整个输入分类为可接受的,即使输入的其余部分充满了不可接受的字符。我应该使用什么正则表达式呢?您需要在正则表达式中添加
^
和$
锚,以及+
以允许多个字符
试试这个:
/^[\u0600-\u06FF]+$/
我不确定您提到的“阿拉伯空格”是否包含在字符范围内,但如果您想在字符串中允许空白,则只需在
[]
括号内添加一个\s
您可以显式允许某些键,例如:numpad、backspace和space,请检查下面的代码段:
function restrictInputOtherThanArabic($field)
{
// Arabic characters fall in the Unicode range 0600 - 06FF
var arabicCharUnicodeRange = /[\u0600-\u06FF]/;
$field.bind("keypress", function(event)
{
var key = event.which;
// 0 = numpad
// 8 = backspace
// 32 = space
if (key==8 || key==0 || key === 32)
{
return true;
}
var str = String.fromCharCode(key);
if ( arabicCharUnicodeRange.test(str) )
{
return true;
}
return false;
});
}
// call this function on a field
restrictInputOtherThanArabic($('#firstnameAr'));