我希望从给定的字符串中提取mailto值,同时还希望删除html标记。
EX->"<mailto:demomail@gmail.com|demomail@gmail.com> helo<p> bye </p>"
输出->demomail@gmail.com helo再见
如果我使用这个->gsub(/<[^>]*>/,'')
输出->直升机再见
如果我使用这个->ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
输出->直升机再见
你能建议我怎样才能得到我的预期产量吗?
预期输出->demomail@gmail.com helo再见
1条答案
按热度按时间kninwzqo1#
问题是mailto值在HTML标记内,所以当您删除这些HTML标记时,您也会删除mailto值。构造一个复杂的正则表达式来处理它绝对是可能的,但我认为将mailto值与字符串的其余部分分开提取要容易得多。我将使用一个捕获组来执行此操作,该捕获组提取
"mailto:"
和"|"
之间的值。然后,您可以使用已有的gsub
方法处理完整的字符串,从而获得输出值的其余部分。如果字符串不是以
<mailto>
标记开头,则可以仅用匹配的电子邮件地址替换整个标记,然后删除后面的其他标记: