我需要为以下内容编写一个正则表达式(NB。忽略回车符,为了便于阅读,我添加了它们):
<strong>Contact details</strong>
<p><label>Office:</label> +44 (0)12 3456 7890<br />
<label>Direct:</label> +44 (0)12 3456 7890<br />
<label>Mobile:</label> +44 (0)1234 567890<br />
<label>E-mail:</label> <a href="mailto:you@me.com">you@me.com</a><br />
我正在使用
/([\+\d\(\)\s]+)/
哪个匹配数字块,我可以使用和偏移0-2来识别它们。问题是它正在返回白色空间,这也搞砸了我的偏移。 怎么说“它必须在比赛中至少包含一位数字”? 我也试过
/\<label\>Office:\<\/label\> ([\+\d\(\)\s]+)\<br \/\>/
但那会返回
+44 (0)12 3456 7890<br />
<label>Direct:</label> +44 (0)12 3456 7890<br />
<label>Mobile:</label> +44 (0)1234 567890<br />
<label>E-mail:</label> <a href="mailto:you@me.com">you@me.com</a>
答案 0 :(得分:1)
使用正则表达式解析HTML不是一个好主意,而是使用DOM基础解析。
你的正则表达式不起作用,因为它贪婪,使其变得非贪婪
([\+\d\(\)\s]+)
到
([\+\d\(\)\s]+?)
同样+
,(
和)
将在char类中进行字面处理。所以不需要逃避它们:
([+\d()\s]+?)