我正在嘗試撰寫一個匹配以下所有模式示例的正則運算式 -
1) Name=John,Age=25
2) {Name=John,Age=25}
3) Name=John
基本上,兩個單詞或數字之間必須有一個等號,后跟一個逗號 (,),然后重復該模式。除了字母、數字或花括號外,模式不能以任何特殊字符結尾。花括號是可選的,如果在模式的開頭使用花括號,那么也應該有一個右花括號,反之亦然,因此以下模式不應匹配 -
1) Name=John!Age=25
2) {Name=John,Age=25
3) Name=John,Age=25}
4) Name=John,
5) Name=John=Age,25!
我正在嘗試使用環視來試驗以下正則運算式,但帶有花括號的模式根本不匹配 -
^(?:(?<=\{)(?=\})|(?<!\{)(?!\}))(?:\w =\w ,)*\w =\w }?$
由于花括號的模式根本不匹配,我在這里做錯了什么?
uj5u.com熱心網友回復:
查看您的正則運算式,我認為這不是前瞻或后視的作業方式。因為它在比賽中向前或向后看。這在這篇文章https://javascript.info/regexp-lookahead-lookbehind中有很好的解釋。
有了這個,我設法創建了一個可以使用前瞻和后瞻的模式。
((?<=\{)(\w =\w ,?) (?<!,)(?=\}))|^(\w =\w ,?) (?<!,)$
在這里你可以看到前瞻試圖在匹配組的后面和之后找到一個 { (\w =\w ,?) (?<!,)。這(?<!,)只是為了防止最后出現逗號。
在此處檢查正則運算式https://regexr.com/6idl8。
uj5u.com熱心網友回復:
這個怎么樣?
\w =\w (?:,\w =\w )*|\{\w =\w (?:,\w =\w )*\}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451874.html
上一篇:JavaScript:如何決議然后呈現字典條目的集合?(陣列、鍵值、排序問題)
下一篇:匹配n次出現的相同元素
