![](/img/trans.png)
[英]Regular expression that matches a pattern but excludes a match when it starts with a certain character
[英]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.