[英]Regex does not contain multiple words
如何使用正則表達式避免字符串中的某些單詞
字符串不應包含測試,使用以下表達式的示例單詞
^((?!(sample|test)).)*$
我可以做到,但在某些情況下失敗
example:
1) this is a test case
2) this is a testing area
在以上兩個示例中
1.它有一個單詞測試,所以很好用,但是在例子中
2)它應該沒有單詞測試
有什么辦法可以做到這一點? 感謝您寶貴的時間和回復
您需要在單詞周圍使用\\b
,以便它們允許匹配,僅當它們不作為完整單詞出現時才適用。 試試這個
^(?:(?!\b(sample|test)\b).)*$
另外,除非您打算使用其值,否則最好將一個組設為非捕獲組。
編輯:
為了使其區分大小寫,請在正則表達式中的/
之后放置i
啟用i
標志。 JS演示
var arr = ['this is a test case','this is a testing area','this is a Test area'] arr.forEach(s => console.log(s + " --> " + /^(?:(?!\\b(sample|test)\\b).)*$/i.test(s)))
嘗試使用此正則表達式(單詞邊界'\\ b'是必需的,並且在這些示例單詞之前還可以出現任意數量的字符):
/^(?!.*?\b(sample|test)\b)/
它也將匹配空字符串,因為其中不包含樣本或測試詞。 要檢查字符串是否不能為空並且不包含樣本和測試詞,請使用:
/^(?!.*?\b(sample|test)\b).+?/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.