組值(a|b|c)
什麼是正則表達式會給我這些輸出這些語句:如何檢查組中具有不同值的語句?
a (True)
a,b (True)
b,c (True)
b,c,a (True)
a, (false) -no value after ','
a,a (false) -Repeated values
b,b (false) -Repeated values
組值(a|b|c)
什麼是正則表達式會給我這些輸出這些語句:如何檢查組中具有不同值的語句?
a (True)
a,b (True)
b,c (True)
b,c,a (True)
a, (false) -no value after ','
a,a (false) -Repeated values
b,b (false) -Repeated values
這裏是一個正則表達式,用於防止重複項和尾隨逗號。
/^(?:([abc]),(?!.*\1))*([abc])$/gm
它測試包含字符後跟一個逗號一個可選基。在組內 - 使用負向預測來確保相同的字符不會在線上自行重複。這個組可能重複任何次數。最後測試最終字符(不可選)。
問候
編輯:
在回答在評論一個問題 - 這裏是你如何可以做同樣的代幣/詞:
^(?:(cat|dog|rat),(?!.*\1))*(cat|dog|rat)$
它基本上是相同的正則表達式,但使用替代字符類的替代字。
你想找到在中集集團昏迷sperated列表{A,B,C},但你不需要任何額外的尾隨昏迷。我想你也不想缺少元素(連續的昏迷)。
我提出這樣的:
^([a|b|c],)*[a|b|b]$
,並提出一點解釋:
,第一部分([A-Za-z]+,)*
搜索每個字母元素跟一個逗號。。可以有任何數量的這些元素。這些是n個元素列表中的1,2,... n-1個元素。
然後這最後部分[a|b|c]
尋找最後元素。
整個字符串被^[stuff]$
包圍,從而強制正則表達式匹配整個輸入字符串,從開始到結束。
試試吧here。 (我不隸屬於這個網站)
希望這對我有所幫助。
只是播種,你不想重複。運氣不好,我不認爲這是可能的。我建議使用上面的方法,然後掃描一次'。* a。*'然後掃描'。* b。*',最後掃描'。* c。*'並請求最後3次掃描的匹配次數爲< 1 –
這匹配重複。不正確 – 4castle
,但這會給我一個重複的阿爾法這樣的,a或b,b :( –
正則表達式不是解決此問題的唯一方法。
如果您想了解如何在沒有正則表達式的情況下執行此操作,以下是一段JavaScript代碼,演示瞭如何執行此操作。如果你想看到它與ClasG的正則表達式的完整演示,here's a cool little fiddle I made。
var regexReplacement = function(input) {
var acceptableStrings = ["a", "b", "c"];
var arr = input.split(",");
if (arr.indexOf("") == -1 && (new Set(arr)).size == arr.length) {
return arr.every(function(val) {
return acceptableStrings.some(function(acceptable) {
return val === acceptable;
});
});
} else {
return false;
}
}
您的問題不清楚,請澄清一下。 – Maroun
@WiktorStribiżew這將匹配a,a和b.b,不是嗎? –
@ChrisLear:當然,前瞻是必要的。 –