我有正則運算式來匹配以下模式,
鏈接到用例:https ://regex101.com/r/wnp1k4/1
如何通過修改正則運算式來獲得相同的匹配?請幫忙。
(?:^|(?<=[\D;a-zA-Z(),.:;?!"'`>]))(?!000|666|9)(?<![Oo][Rr][Dd][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr]...)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr].)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]..)(?<![Oo][Rr][Dd][Ee][Rr].[Nn][Uu][Mm][Bb][Ee][Rr]...)(?<![Xx])\d{3}[ -.=\n\r]{0,10}(?!00)\d{2}[ -.=\n\r]{0,10}(?!0000)\d{4}(?:$|(?=[\Da-zA-Z(),.:;?!"'`<= ]))
如果訂單號前面有“X 或 x”,則不應檢測到訂單號。所以這作業正常。
x123456789
X123456789
x123-456-789
X123-456-789
123-456-789
需要修改正則運算式模式以匹配如下所示的訂單編號串列......以及單詞(訂單編號)應該不區分大小寫。
訂單號123-456-789
訂單號123-456789
訂單號 123456789
123-456789
123456789
訂單號-123456787
訂單號 - 123456789
訂單號 #123456789
訂單號anysplcharacter 123456789
uj5u.com熱心網友回復:
將我的評論轉換為答案,以便將來的訪問者輕松找到該解決方案。
你可以使用這個正則運算式:
(?<!\d)(?!000|666|9)(order\W?number)?\W*(?<!x)\d{3}[ .=-]{0,10}(?!000)\d{3}[ .=-]{0,10}(?!000)\d{3}
正則運算式演示
正則運算式詳細資訊:
(?<!\d):確保前一個字符不是數字(?!000|666|9): 確保我們在下一個位置沒有000or6669(order\W?number)?: 匹配order并可number選用非單詞字符分隔\W*: 匹配 0 個或多個非單詞字符(?<!x): 確保前一個字符不是x\d{3}: 匹配 3 位數字[ .=-]{0,10}: 匹配給定分隔符的 0 到 10 個實體(?!000):確保我們沒有000在下一個位置\d{3}: 匹配 3 位數字[ .=-]{0,10}: 匹配給定分隔符的 0 到 10 個實體(?!000):確保我們沒有000在下一個位置\d{3}: 匹配 3 位數字
uj5u.com熱心網友回復:
/((?<key>order\s*number).*)?(?<!x)(?<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim
const multilineSample = `x123456789
X123456789
x123-456-789
X123-456-789
123-456-789
ordernumber123-456-789
order number123-456789
order number 123456789
123-456789
123456789
ordernumber-x123456787
ordernumber-123456787
ordernumber - 123456789
ordernumber #123456789
ordernumber *anysplcharacter*123456789
ordernumber !@#$%^&123456789
ordernumber !@#$%^&x123456789`;
const regXOrderNumber =
// see ... [https://regex101.com/r/wnp1k4/6]
/((?<key>order\s*number).*)?(?<!x)(?<value>\d{9}|\d{3}-\d{6}|\d{3}-\d{3}-\d{3})/gim;
console.log(
'all results each with its mapped named capture group ...',
Array.from(
multilineSample.matchAll(regXOrderNumber)
)
.map(({ groups }) => groups)
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
uj5u.com熱心網友回復:
嘗試這個。
^([^x]|(order\s?number\s?)(\s?[-|#]?\s?))(anysplcharacter)?([\d-] )$
有沒有其他情況?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429784.html
