簡體   English   中英

匹配特定字符串模式的正則表達式

[英]Regular expression to match certain string pattern

我有像name1|value1 , name1|value1,name2|value2 , name1|這樣的字符串模式name1|value1, 我必須有正則表達式才能找到給定的模式是真還是假

輸入和輸出將是

"name1|value1" -> true
"name1|value1,name2|value2"  -> true
"name1|" -> false
"name1|value1," -> false
"name1|value1,name2" -> false
"name1|value1,name2|" -> false

很簡單: ^\\w+\\|\\w+(,\\w+\\|\\w+)*$

第一部分^\\w+\\|\\w+確保字符串以至少 1 個完整的name|value對開頭。

然后第二部分(,\\w+\\|\\w+)*表示只要第一對和所有后續對之間有逗號,相同的模式就可以無限重復。 雖然,星號量化了模式的第二部分可能根本不會發生。

最后$表示字符串必須以匹配此模式結束。 (即,此模式不能只匹配字符串的一部分。由於^$它必須匹配整個字符串。)

要為 javascript 格式化此模式,只需在兩端放置一個正斜杠,即: /^\\w+\\|\\w+(,\\w+\\|\\w+)*$/該模式不需要任何標志。

值得注意的是,如果您需要匹配\\w字符范圍之外的更復雜的名稱/值,那么您應該將所有\\w替換為[Some Character Set(s)]

如果您要檢查多對,您可以使用every函數將正則表達式應用於拆分的字符串元素:

 isValidPairs = function(str) { return str.split(',').every(function(elt) { return /^\\w+\\|\\w+$/.test(elt); }); } pairsArr = ["nam1|val1", "nam1|val1,name2|val2", "nam1|", "nam1|val1,", "nam1|val1,name", "nam1|val1,name|"]; pairsArr.forEach(function(str) { console.log('%s: %s:', str, isValidPairs(str)); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM