Javascript返回" false"如果没有正则表达式匹配

时间:2017-10-06 21:11:35

标签: javascript arrays is-empty

以下代码examines the content of inputData.body for a 32-character string match,以及 - 据我所知 - 将任何匹配放在数组中。

// stores an array of any length (0 or more) with the matches
var matches = inputData.body.match(/\b[\w-]{32}\b/g)

// the .map function executes the nameless inner function once for each element of the array and returns a new array with the results
return matches.map(function (m) { return {str: m} })

我现在需要代码在没有匹配表达式的情况下返回某些东西,例如。字符串"false"

我无法让这个加入工作......

// stores an array of any length (0 or more) with the matches
var matches = inputData.body.match(/\b[\w-]{32}\b/g)

if (matches == null){
    return 'false'
}

// the .map function executes the nameless inner function once for each element of the array and returns a new array with the results
return matches.map(function (m) { return {str: m} })

在空虚的情况下,我应该如何有条件地归还某些东西?

3 个答案:

答案 0 :(得分:0)

调用者需要一个对象数组或一个对象(可能被视为该对象的数组)。所以返回一个对象。

if (matches == null) {
    return { str: "false"; }
}
return matches.map(function (m) { return {str: m} });

或在一个声明中:

return matches == null ? { str: "false"; } : matches.map(function (m) { return {str: m} });

答案 1 :(得分:0)

调用者可能需要一个数组,如果没有匹配则该数组应为空数组。您不需要if声明,只需执行此操作:

return (matches || []).map(function (m) { return {str: m} })

答案 2 :(得分:0)

要测试regEx是否与特定模式匹配,您应该使用返回true / false的test()方法。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test