【发布时间】:2011-11-18 20:23:18
【问题描述】:
如何设置我的正则表达式来测试一个 URL 是否包含在 javascript 的文本块中。我无法完全弄清楚用于完成此操作的模式
var urlpattern = new RegExp( "(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
var txtfield = $('#msg').val() /*this is a textarea*/
if ( urlpattern.test(txtfield) ){
//do something about it
}
编辑:
所以我现在拥有的模式可以在正则表达式测试器中用于我需要它做的事情,但 chrome 会引发错误
"Invalid regular expression: /(http|ftp|https)://[w-_]+(.[w-_]+)+([w-.,@?^=%&:/~+#]*[w-@?^=%&/~+#])?/: Range out of order in character class"
以下代码:
var urlexp = new RegExp( '(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?' );
【问题讨论】:
-
为什么要排除 FTPS?
-
我真的只需要 http/https 所以在我的情况下我也可以省略 ftp
-
这本质上是How to replace plain URLs with links? 的复制品,这就解释了为什么正则表达式不适合这类任务。
标签: javascript jquery regex