您好,我希望在Spry JavaScript框架中使用以下PHP正则表达式,但它们在Spry框架中无法工作,而且Spry不允许用户输入!
1)"/^[\d]+$/"
2)"/^([\x{600}-\x{6FF}]+\s)*[\x{600}-\x{6FF}]+$/u"
3)"/^([\x{600}-\x{6FF}]+\d*\s)*[\x{600}-\x{6FF}]+\d*$/u"
请帮助我将它们转换为可以在Spry框架中使用的格式。
您好,我希望在Spry JavaScript框架中使用以下PHP正则表达式,但它们在Spry框架中无法工作,而且Spry不允许用户输入!
1)"/^[\d]+$/"
2)"/^([\x{600}-\x{6FF}]+\s)*[\x{600}-\x{6FF}]+$/u"
3)"/^([\x{600}-\x{6FF}]+\d*\s)*[\x{600}-\x{6FF}]+\d*$/u"
请帮助我将它们转换为可以在Spry框架中使用的格式。
1) /^[\d]+$/
2) /^([\u0600-\u06FF]+\s)*[\u0600-\u06FF]+$/
3) /^([\u0600-\u06FF]+\d*\s)*[\u0600-\u06FF]+\d*$/
/u不被支持,因为Javascript正则表达式只支持unicode的码点。在Javascript正则表达式中,应该使用\x{???}(unicode码点)来代替\u????(始终为4个数字0填充)。
在这些情况下,其余正则表达式遵循以下规则:
这意味着我们需要特别允许“外来”数字,例如波斯文(码点06F0-06F9):
1) /^[\d\u06F0-\u06F9]+$/
2) /^([\u0600-\u06FF]+\s)*[\u0600-\u06FF]+$/
3) /^([\u0600-\u06FF]+[\d\u06F0-\u06F9]*\s)*[\u0600-\u06FF]+[\d\u06F0-\u06F9]*$/
(如果不允许接受ASCII数字,请删除\d)
不确定示例1中的括号应该怎么用,原始写法如下:
1) /^\d+$/
为了添加波斯数字,我们需要它们,请参见上文。
更新
然而,Spry字符掩码只希望在每个输入字符上应用正则表达式 - 也就是说,我们实际上不能进行模式匹配,它只是一个“列表”,其中包含所有地方接受的字符,这种情况:
1 ) /[\u06F0-\u06F9\d]/ // match 0-9 and Persian numerals
2 and 3) /[\u0600-\u06FF\d\s]/ // match all Persian characters (includes numerals), 0-9 and space
如果您不希望接受0-9,请再次删除\d。
更新2
现在...使用正则表达式进行Spry验证:
var checkFullName = function(value, options)
{
// Match with the by now well-known regex:
if (value.match(/^([\u0600-\u06FF]+\s)*[\u0600-\u06FF]+$/))
{
return true;
}
return false;
}
var sprytextfield =
new Spry.Widget.ValidationTextField(
"sprytextfield",
"custom",
{ validation: checkFullName, validateOn: ["blur", "change"] }
);
您是将它们作为字符串传递还是正则表达式对象传递?尝试从正则表达式周围删除“字符”。
“u”标志有些棘手。您可能需要解释第二个和第三个正则表达式尝试做什么。