正则表达式匹配长字符串中的URL

时间:2016-01-20 15:52:27

标签: javascript c# regex

我这里有一个字符串:

  

美好的一天,我想1000美元(例如删除这些括号)$ test $ asdf [并删除这些括号]在这里查询3D产品名称的价格。目前我们在这里有另一个产品名称,我认为其准确度约为0.0005 199 200. http://www.example.com这是一个测试

我在这里链接了一个正则表达式:https://regex101.com/r/yE4kW6/7

其中有正则表达式:

[^\w\s|https?:\/\/.\-*\s]|\W*\b\d+(?:\.\d+)?\b

我现在要做的就是让它与整个网址相匹配。我的|https?:\/\/.\-*\s似乎找到了网址,但它忽略了它,可能是因为^在该集合的开头?我可以使用它来匹配字符串中的URL。

4 个答案:

答案 0 :(得分:1)

除了我的评论之外,您还可以提出一个正则表达式:

~(https?://\S+)~
# start / end with the tilde ~ as delimiters
# look for http/https, followed by ://
# match anything that is not a whitespace
# capture everything into a group

对于JavaScript,这将归结为(记住转义的正斜杠):

(https?:\/\/\S+)

这不是非常具体,但在很大程度上取决于您的输入字符串(也可以匹配URL的无效字符)。 见a demo on regex101 here

答案 1 :(得分:0)

尝试这样的事情:

[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

More Information

答案 2 :(得分:0)

你可以试试这个Regex:

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

答案 3 :(得分:0)

您可以使用以下正则表达式

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

我已经用你的字符串测试了它。在https://regex101.com/r/yE4kW6/8

进行测试