Javascript http regex
Javascript http regex
我目前正在使用以下方法将[url=][/url]
转换为html链接:
s = message.replace(/'[url=([^']]+)']'s*(.*?)'s*'['/url']/gi, "<a href='$1'>$2</a>")
这项工作很好。
然后,我使用正则表达式添加了另一个替换函数,将www
替换为如下所示的http://www
:
s = message.replace(/'[url=([^']]+)']'s*(.*?)'s*'['/url']/gi, "<a href='$1'>$2</a>")
.replace(/www/g, "http://www");
这可能不是最好/有效的方法,也不支持https://
目前不是优先事项,但我想在某个时候包含。有人可以告诉我我可以做些什么来改进正则表达式吗?
几件事:
首先,你的第二个模式存在一些问题。 它不区分大小写(而第一种模式不区分大小写(,因此它不会捕获"WWW"之类的内容。 也许这是可取的,也许不是。 但它也是全局的,并且不锚定到 URL 的开头。 因此,它将替换 URL 中任何位置的 www。 将其更改为类似 /href=''www/
的内容,然后将替换字符串更改为 href='http://www
应该可以解决这些问题。
其次,在这种情况下,使用 2 个正则表达式可能还不错。 如果你愿意,你可以把它折叠成一个正则表达式,但这并不意味着它对计算机或碰巧正在阅读它的可怜人来说更有效率。
综上所述,使用单个正则表达式实现此目的的一种方法是执行以下操作:
s = message.replace(/'[url=(?:http:'/'/)?([^']]+)']'s*(.*?)'s*'['/url']/gi, "<a href='http://$1'>$2</a>")
这可能会实现您想要的。 但是,它不会关闭"www",它只是将"http://"附加到任何尚未以该字符串开头的 URL 上。 正如你提到的,它也不支持https,但我不确定你将如何支持它。 如果给你的只是一个没有协议的URL,你如何确定是否让它成为https?
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- Regex代码只允许一个空格
- Meteor如何接收HTTP请求
- Regex匹配除“”之外的所有字符;.js”;
- RegExp:匹配Javascript中除regex值之外的所有内容
- Javascript RegEx validator
- 强制URL字段不具有“;http://www."使用regex
- Javascript http regex
- URL验证REGEX-URL仅对http://有效
- Regex检测没有www和http的url
- URI Regex:如果URL有效,则用空字符串替换http://、https://、ftp://
- 当URL可能包含或不包含HTTP和WWW时,URL的JavaScript Regex
- 搜索'www.'替换为'http://'使用regex javascript
- 如何让RegEx获取整个URL..从http开始,获取后面的所有内容,直到出现空白以及如何排除某些字符
- Regex查找所有带有http url的img标签
- regex:在content-type http header中匹配javascript mime类型
- http://的Regex,但不是https://
- 使用regex验证url(可选)http:www
- Javascript ascii http:// regex
- RegEx删除http://www.如果它存在于PHP和JS中