[英]match pattern nth digit of a number using regex
我正在使用正則表達式/^(\+88)?01[3-9]\d{8}$/
let phoneNum = "+880136486336"
let validRegex = /^(\+88)?01[3-9]\d{8}$/;
console.log(validRegex.test(phoneNum));
匹配匹配某些字符串的模式,例如
+8801712345678
01712345678
01312349876
它工作正常,但我也想匹配01[n]
,其中n
將是3-9
。 模式找出 mobile.network 運營商。
我想做這樣的事情
如果號碼是01712345678則打印“網絡運營商 A”,
如果號碼是+8801712345678則打印“網絡運營商 A”
如果號碼是01312349678然后打印“網絡運營商 B”
和
n
的不同值的不同運算符。這里
017, 013, 014, 016, 015, 019, 018
是我想用來根據手機號碼查找運營商的移動運營商代碼。
我找不到任何方法來做到這一點。 我怎樣才能用正則表達式做到這一點?
您可以使用捕獲組捕獲開頭的三位數字,然后使用String#match
或RegExp#exec
獲取實際匹配項,然后,如果有匹配項,則獲取組值並從字典中獲取運算符名稱:
const phones = ['+8801712345678','01712345678','01312349876']; const operators = {'017': 'Operator A', '013': 'Operator C', '014': 'Operator B', '016': 'Operator D', '015': 'Operator E', '019': 'Operator F', '018': 'Operator G'}; const validRegex = /^(?:\+88)?(01[3-9])\d{8}$/; for (const phone of phones) { const match = validRegex.exec(phone); if (match) { console.log(phone, "=> Valid, belongs to", operators[match[1]]) } else { console.log(phone,"=> NO MATCH"); } }
這里,
^(?:\+88)?(01[3-9])\d{8}$
:第一個可選組現在是非捕獲組,現在有一個 ID = 1 的捕獲組, (01[3-9])
validRegex.exec(phone)
得到匹配 objectoperators[match[1]]
通過鍵返回 Operator 名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.