首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP与JavaScript regex的区别

PHP与JavaScript regex的区别
EN

Stack Overflow用户
提问于 2012-01-31 07:03:37
回答 2查看 3.2K关注 0票数 8

嗨,我想在spry java脚本框架中使用下面的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框架中使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-31 07:15:03

代码语言:javascript
复制
1) /^[\d]+$/
2) /^([\u0600-\u06FF]+\s)*[\u0600-\u06FF]+$/
3) /^([\u0600-\u06FF]+\d*\s)*[\u0600-\u06FF]+\d*$/

不支持/u,因为Javascript regexes仅在代码点方面支持unicode。\X{?} (unicode代码点)应写为\u?在Javascript正则表达式中(始终为4位0填充)

在这些情况下,以下内容适用于regex的其余部分:

Javascript中的

  • \s被视为unicode
  • \d is,这意味着只接受ASCII位(0-9)。

这意味着我们必须特别允许“外来”数字,例如波斯(代码点06F0-06F9):

代码语言:javascript
复制
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中括号应该做什么,最初它们可以写成:

代码语言:javascript
复制
1) /^\d+$/

但是要添加波斯数字,我们需要它们,见上文。

更新

然而,Spry字符掩码只希望对每个输入的字符应用正则表达式--也就是说,我们实际上不能进行模式匹配,它只是所有地方接受的字符的“列表”,在这种情况下:

代码语言:javascript
复制
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中使用regex进行验证:

代码语言:javascript
复制
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"] }
     );

对于情况3,可以创建类似的自定义函数。

请参阅examples from Adobe labs

票数 8
EN

Stack Overflow用户

发布于 2012-01-31 07:07:40

您是将它们作为字符串还是正则表达式对象进行传递?尝试删除正则表达式周围的“字符。

“u”标志有点棘手。您可能需要解释第二个和第三个正则表达式试图做什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9072138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档