首页 > 编程 > Regex > 正文

15.13.如何使用正则表达式来为不同类型进行匹配?

2024-09-07 17:39:54
字体:
来源:转载
供稿:网友
15.13.1 问题
在一些情况下, 如果想对一些以正则表达式的模式进行匹配的话, 应怎么做呢?
15.13.2 解决办法
可以使用群组语法, 例如”.”或”+”来为不同的群组进行不同次数的匹配。
15.13.3 讨论
正如在章节15.12 中所见, “{}”号语法可以用来表示一个子表达式需要匹配的次数及该结果是否需要返回。举例说, 如果你想对包含0 至4 范围内的字符串进行比较:
+展开
-ActionScript
var firstString:String = "12430";
var secondString:String = "603323";

就以上的两个字符串来说, 你可以使用以下的修饰器来对它们进行匹配:
?? 只进行0 到1 次的匹配
*? 进行0 次或以上的匹配
+? 进行1 次或以上的匹配
需要记住的是, 匹配跟返回匹配是两个不同的观念。例如: 你想找出两个字符串之间是否只包含0 至4 范围内的数字, 可以使用RegExp 里的test 方法, 它会返回一个布朗值(true/false)。

如果你想对一个字符串内的所有字符进行匹配, 直到发现非匹配的字符为止, 可以使用String 里的match 方法。如果你想对所有字符进行检查, 无论它们是否匹配, 则可以在正则表达式中(例如: /[0-4]+g/)使用global 标记及match 方法。

例如: /[abc]+/可以用来对abbbca 或abba 进行匹配, 也可以从abcss 中返回abc.

/w+@/w+/./w+ 是用针对电邮地址进行的验证。需要注要的是, 在这里, “.”号是一个字符, 用以分隔字符串而并非正则表达式中的语法部份。而”/w+@/”中的”+”号则表示这里可以有任何数目的字符, 但其后一个要包括一个”@”号。

以下的代码展示了不同标记的用法以及对它们的结果作出说明
代码如下:
+展开
-ActionScript
var atLeastOne:RegExp = /[0-4]+/g;
var zeroOrOne:RegExp = /[0-4]*/g;
var atLeastOne2:RegExp = /[0-4]+?/g;
var zeroOrOne2:RegExp = /[0-4]*?/g;
var firstString:String = "12430";
var secondString:String = "663323";
firstString.match(atLeastOne));//returns "1243"
secondString.match(atLeastOne));//returns "3323" because we want
as many characters as will match
firstString.match(zeroOrOne));//returns "1243" the first few
characters match
secondString.match(zeroOrOne));//returns "" because the first few
characters don't mat ch, we stop looking
firstString.match(atLeastOne2));//returns "1,2,4,3" because all we
need is one match
secondString.match(atLeastOne2));//returns "3,3,2,3"
firstString.match(zeroOrOne2));//returns ""
secondString.match(zeroOrOne2));//returns ""
zeroOrOne2.test(firstString));//returns true
zeroOrOne2.test(secondString));//returns false
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表