【问题标题】:Is there a method that returns only the match or first variable match of a RegEx in ActionScript or null?是否有一种方法仅返回 ActionScript 中 RegEx 的匹配项或第一个变量匹配项或 null?
【发布时间】:2016-12-20 15:04:43
【问题描述】:

是否有一种方法只返回一个匹配项,如果没有匹配项则返回 null?

这可能是大脑冻结,但有没有一种方法只返回匹配项,如果没有则返回 null?

例如,如果我只想返回第一个变量,否则返回 null:

var value:String = "image/png".toLowerCase();
var result:String = value.find(/image/(png|jpg|jpeg|gif)/);

if (result=="png") {
    // do something
}

我知道有 replaceexecmatch 并且它们返回数组等,但我只是在寻找一种返回我的第一个匹配项或 null 的方法。

如果没有这样的功能,我希望有。我多么希望有上帝。

【问题讨论】:

    标签: javascript regex actionscript-3


    【解决方案1】:

    没有特定的方法可以做到这一点。最接近的方法是String.matchRegExp.exec,因为正则表达式没有全局修饰符,所以在这里没有什么区别。一旦您使用带有全局修饰符的正则表达式,您将别无选择,只能使用RegExp.exec

    使用String.matchRegExp.exec 可以检查结果是否为null,如果不是null,则提取Group 1 值以检查是否为png

    var pattern:RegExp = /image\/(png|jpg|jpeg|gif)/; 
    var str:String = "image/png".toLowerCase(); 
    var m:Array = pattern.exec(str); 
    if (m != null) 
    { 
        if (m[1] == "png") {
            // Do stuff
        }
    }
    

    请注意,/ 必须在正则表达式中进行转义。

    您也可以将模式稍微缩小为(png|jpe?g|gif),但尽管它在内部会更好地工作,但它的可读性会降低。

    【讨论】:

    • 这解决了问题,但你是说exec 是我想做的最接近的函数吗?
    • 您只需要访问第 1 组。使用 String.matchRegExp.exec,这没什么区别,因为正则表达式没有全局修饰符。一旦你使用带有全局修饰符的正则表达式,你将别无选择,只能使用RegExp.exec
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多