2015-05-20 116 views
2

我有以下REG例如:正則表達式不匹配新行

"^((?!([\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3})))).)*$" 

但它不符合新的生產線,以及:

https://regex101.com/r/nT6wK0/1

任何想法如何使它匹配時有一個新的線?

+0

建議使用http://regexper.com查看您的正則表達式。 [實施例](http://regexper.com/#%5E((%3F!(%5B%5CW!%23%24%25%26' *%2B%5C-%2F%3D%3F%5C% 5E_%60%7B%7C%7D〜%5D%2B(%5C。%5B%5CW!%23%24%25%26' *%2B%5C-%2F%3D%3F%5C%5E_%60 %7B%7C%7D〜%5D%2B)*%40(((%5B%5C-%5CW%5D%2B%5C。)%2B%5Ba上-ZA-Z%5D%7B2 2C4%%7D) %7C((%5B0-9%5D%7B1%2C3%7D%5C。)%7B3%7D%5B0-9%5D%7B1%2C3%7D)))))。)*%24) – Underverse

+1

你是什麼人試圖實現?我很好奇... –

+0

我想jquery驗證以檢查電子郵件地址是否包含在描述字段 – Jimmyt1988

回答

2

.在實際上意味着

所有,但一個換行符。 (source)

通過與[\S\s]替換它,這意味着

所有間隔字符和所有非空格字符;所以所有的角色。

然後它似乎工作。你也可以使用其他變體像[\W\w][\D\d] ...

那麼「正確」的正則表達式(請不要把我的話,第一個測試這)是:

^((?!([\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))))[\S\s])*$ 

regex101 demo

+0

是的,更多是的!謝謝! – Jimmyt1988

1

假設您只想匹配第一行,可以添加多行選項(/ m)以包含換行符。

如果你想要包含第二行,你需要預先讀一行。你如何做到這一點取決於正則表達式引擎:sed中的N; getline in awk; -n in perl; ...