2016-08-20 74 views
0

我想獲取所有不以1,2,12,34開頭的文本。
我寫正則表達式 - 選擇所有不以特定數字開頭的文本

^((?!1|2|12|34).)*$ 

(^斷言位置在一行的開始)
爲:

https://regex101.com/r/gI6sN8/14

問題

  • 它也不會選擇文本中間有1或2個(「AB 1 CD」)。
  • 它也不會選擇13(因爲它從1開始)

我怎麼能限制它

+0

我認爲它的定位** ['括號'](https://regex101.com/r/gI6sN8/15)** – rock321987

+0

也需要** ['\ b'](https:// regex101 .com/r/gI6sN8/17)** – rock321987

+0

通過「get」,你的意思是「匹配」? – 2016-08-20 16:57:21

回答

1

正如評論中所述,您需要文字邊界和正確的括號位置

^(?!(?:1|2|12|34)\b)(.*)$ 

Regex Demo

您還可以使用\D

^(?!(?:1|2|12|34)\D)(.*)$ 

在你的正則表達式

^((?!1|2|12|34).)*$ 

你發現以上任何替代1|2|12|34是否是在每個位置正確。這就是爲什麼它不匹配AB 1 CD

+0

'\ b'做什麼?我懷疑它是否會在字符串的開頭匹配。 – 2016-08-20 16:58:30

+0

@torazaburo你是對的。更新它 – rock321987

+0

謝謝,這也過濾13.這不是我正在尋找的行動@ hek2mgl解決了它。 – Jeb

相關問題