這更多的是爲了滿足我的好奇心而不是真正需要幫助的問題,但是我會很感激您的幫助,因爲這會讓我發瘋。javascript正則表達式中的精確字符串否定
我想取消使用Javascript正則表達式的確切字符串,這個想法是排除包含字符串「www」的URL。比如這個名單:
http://www.example.org/
http://status.example.org/index.php?datacenter=1
https://status.example.org/index.php?datacenter=2
https://www.example.org/Insights
http://www.example.org/Careers/Job_Opportunities
http://www.example.org/Insights/Press-Releases
對於我能成功地使用下面的正則表達式:
/^http(|s):..[^w]/g
這工作正常,但在我可以做一個積極的比賽,我不能這樣做:
/[^www]/g or /[^http]/g
要排除包含確切字符串www或http的行。我曾嘗試臭名昭著的「負Lookeahead」這樣的:
/*(?: (?!www).*)/g
但是,這並不工作,要麼我也可以不在線測試它,它不會在記事本作品++兩種。
如果我使用Perl,grep的,awk中或我的TextWrangler會做簡單:
!www OR !http
而這一切都完成任務。
所以,我的問題顯然是:在JavaScript中做這種事情的正確方法是什麼?這是否依賴於正則表達式解析器(正如我似乎瞭解?)。
感謝您的任何答案;)
Whoaaa,非常感謝! 現在我需要掌握它的工作原理。我的意思是,我可以「讀」它,我看到有一個負面的前瞻和一個字邊界......現在我看到W3C學校的參考非常有限,這裏有更多:https:// developer。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp Cool,THX,對於像我這樣的bash人來說,需要一些時間來習慣這種類型的正則表達式的邏輯。 – runlevel0
@ runlevel0哪一部分你不明白。問我,我會解釋.. –
嗨Avinash:我明白了,它慢慢閱讀,並一步一步。我的意思是,我需要學會用「說」和「思考」,就像我用來思考和說Perl或Bash正則表達式一樣。這就像學習一種新的語言;)感謝您的興趣! – runlevel0