我有一個包含表示數字的字串的陣列。陣列中僅有的兩種有效元素型別是:
- 全數字字串(例如:“123”、“123344”)
- 匹配特定模式 xxx-xxxxx 的字串,其中所有 x 都是數字(例如:“123-12345”、“233-30000”)。
將來可以將此模式添加到更多值,即 xx-xxxxx 和 x-xx-xxx,其中所有 x 仍然是數字:
我有以下代碼可以解決 1 但不能解決 2 :
const arr = ["ab's-test#s", "ab-c", "124", "123-12345"];
var arr2 = arr.filter(function(el) {
return el.length && el== el && el.match(new RegExp("^\\d{3}(-\\d{5})?$"));
});
console.log(arr2)
這會列印出來["124"]
但是 - 我希望它列印出來["124","123-12345"]
有沒有辦法允許數字和數字模式作為同一個過濾器功能的一部分?提前致謝。
uj5u.com熱心網友回復:
您可以使用帶有正則運算式的條件 OR 來測驗您的字串是 number 還是帶有 pattern 的數字xxx-xxxxx。
const arr = ["ab's-test#s", "ab-c", "124", "123-12345"],
arr2 = arr.filter((str) => /^\d{3}-\d{5}$/.test(str) || /^\d $/.test(str));
console.log(arr2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/343828.html
標籤:javascript
