【问题标题】:Regex to validate URL with a special character正则表达式使用特殊字符验证 URL
【发布时间】:2014-06-17 13:00:41
【问题描述】:

我正在使用普通的 jquery 验证来验证用户输入是否是有效的 URL

所以这个输入的验证是真的,用户可以输入一个有效的 URL

http://www.example.com/investments/stocks-shares/?source=XYZ

但是我希望用户能够输入类似的 URL

http://www.example.com/investments/stocks-shares/?source={user-code}

现在{user-code} 使 URL 无效,用户无法输入此 URL。所以我需要一个可以像这样验证 URL 的正则表达式

http://www.example.com/investments/stocks-shares/?source={user-code}

{user-code} 可以出现在 URL 中的任何位置。我是 REGEX 的新手,因此不胜感激。提前致谢。

【问题讨论】:

  • 请举例说明您希望正则表达式接受什么,以及您希望正则表达式拒绝什么。此外,如果您展示您的工作,即向我们展示您迄今为止提出的正则表达式,将会很有帮助。
  • 我只需要一个简单的 URL 验证器,我只需要一个允许在 URL 中使用花括号的 execption。
  • 同时已经给出了一个看似实用的答案,我想知道您为什么要验证 URL?鉴于乔纳森的答案的实现,您提供的示例完全有效,但仍然是虚假的死链接。那有什么用呢?

标签: jquery regex validation


【解决方案1】:

请注意,仅使用正则表达式绝对不可能制作出完美的 URL 验证器。我在 URL 验证方面做了大量工作,我可以 100% 向您保证。

可以制作一个适用于大多数情况的纯正则表达式 URL 验证器,但它会有一些误报和漏报。

Matthew O'Riordan 已经为简单的验证器 here 提供了答案。我只需要修改他的验证器以支持花括号。

这是修改后的正则表达式和您的答案:

^((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_{}]*)#?(?:[\w]*))?)$

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2022-10-22
    • 2019-12-19
    相关资源
    最近更新 更多