我需要一些幫助來構建正則運算式。條件如下
- 運算式必須以
# - 然后它應該包含至少一組或多組字母數字字符,由
- - 每組至少包含一個字母數字字符
- 運算式應以
-applesor結尾-bananas
一些測驗用例
- #hshg1h2-hd212df-7632jhsd-bananas (匹配)
- #jhkj31j-jkh213j-jjkhjj324-蘋果(匹配)
- hjsdjjhsd-jhsshdjs-jdshdsj-apples(不匹配)
- #---蘋果(不匹配)
- #jhkj31j-jkh213j-jjkhjj324(不匹配)
- #jhkj31j-jkh213j-jjkhjj324-apples-bananas(不匹配)
我創建了以下運算式
^#([a-zA-Z0-9]{1,}-){1,}(apples|bananas)$。對于大多數測驗用例,它提供了正確的結果。然而,它也與它不應該匹配的測驗用例6匹配。
背景
測驗用例模擬了蘋果和香蕉這兩種產品的產品 ID。這些 id 始終包含作為最后一組-bananas或-apples. 因此-apples-bananas,反之亦然,假設產品 ID 無效。
誰能告訴我我該怎么做?
uj5u.com熱心網友回復:
您可以使用前瞻和更改:
/^#(?!.*apples.*bananas|.*bananas.*apples)(?=[a-zA-Z0-9] -[a-zA-Z0-9] ).*(?:apples|bananas)$/
演示
使用詞邊界斷言總是好的:
/^#(?!.*\bapples\b.*\bbananas\b|.*\bbananas\b.*\bapples\b)(?=[a-zA-Z0-9] -[a-zA-Z0-9] ).*(?:\bapples\b|\bbananas\b)$/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418902.html
標籤:
下一篇:正則運算式掃描檔案以獲取特定內容
