javascript - 是否有一种方法只返回 ActionScript 中 RegEx 的匹配项或第一个变量匹配项或 null?

标签 javascript regex actionscript-3

是否有一种方法只返回匹配项,如果没有匹配项则返回 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 并且它们返回数组等,但我只是在寻找一种返回我的第一个的方法匹配或为空。

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

最佳答案

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

使用 String.matchRegExp.exec 您可以检查结果是否为 null 以及是否不是 null 然后提取第 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),但尽管它在内部工作得更好,但它的可读性会降低。

关于javascript - 是否有一种方法只返回 ActionScript 中 RegEx 的匹配项或第一个变量匹配项或 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245366/

相关文章:

正则表达式 : Keep text between 2 keywords but only if another keyword exists inside them

apache-flex - 获取本地加载的大图像的尺寸

html - Flex vs HTML5(为什么Flex这么受攻击?)

Python URL 匹配(正则表达式)

regex - 正则表达式中什么是零宽度独立子表达式?

javascript - 如何计算同一类的元素数量?

javascript - 如何使用 Vue js 2 在组件子组件链上冒泡事件?

jquery - 在actionscript中,是否有类似jQuery的ajax函数$.post()的函数?

javascript - "Failed to instantiate module ' app ' due to" Angular 和平均堆栈

javascript - 在基于 iframe 的文本编辑器中禁用 Firefox 和 Chrome 拼写检查