【问题标题】:Block regex to recognize number while it's part of a URL阻止正则表达式识别作为 URL 一部分的数字
【发布时间】:2015-07-08 07:57:33
【问题描述】:

我正在使用正则表达式:[(]?(((\d)([() .-]+)?)+){7,18}|\*\d{3,10}|\d{3,10}\*(?!/)

如何将附加的正则表达式更改为不将作为 Facebook 网址一部分的号码识别为电话号码,但可以识别不属于网址的电话号码?

网址: https://www.facebook.com/pages/Fashion-24/151055822249094?fr=ts

上述正则表达式将“151055822249094”检测为电话号码。

【问题讨论】:

  • 又是一个历史问题。您能告诉我们您使用的是什么语言吗?也许,您也可以使用(?<![/\d])(?:[(]?(?:(?:(?:\d)([() .-]+)?)+){7,18}|\*\d{3,10}(?!\d)|(?<!\d)\d{3,10}\*)(?!/)

标签: c# regex url phone-number


【解决方案1】:

你可以在你的正则表达式中使用否定的lookbehind:

(?<!/)[(]?(((\d)([() .-]+)?)+){7,18}|*\d{3,10}|\d{3,10}*(?!/)

【讨论】:

    【解决方案2】:

    如果您使用的是 C#,则可以使用后视功能来确保您不在 URL 内:

    (?i)(?<!\bhttp\S*)(?:[(]?(?:(?:(?:\d)([() .-]+)?)+){7,18}|\*\d{3,10}(?!\d)|(?<!\d)\d{3,10}\*)(?!/)
    

    demo

    【讨论】:

    • 很高兴。然后,请考虑接受(因为它对您有用)并投票(如果证明对您有帮助)答案。
    猜你喜欢
    • 1970-01-01
    • 2017-01-08
    • 2017-12-08
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2010-09-06
    • 2012-05-17
    相关资源
    最近更新 更多