Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用正则表达式检测字符串中的*任何*链接?_Ruby On Rails_Regex_String_Url_Detect - Fatal编程技术网

Ruby on rails 用正则表达式检测字符串中的*任何*链接?

Ruby on rails 用正则表达式检测字符串中的*任何*链接?,ruby-on-rails,regex,string,url,detect,Ruby On Rails,Regex,String,Url,Detect,这种情况毫无疑问。 我不想检测字符串是否包含任何链接,即http、ftp、https和www等的所有组合 基本上我想防止字符串包含任何链接 我目前使用: name.split(/\s+/).find_all { |u| u =~ /^https?:/ }).count 防止字符串中出现任何链接的最佳方法是什么?我最后使用了: errors.add(:name, "Your name cannot contain links") if name.match /\b(?:(?:mailto:\S+

这种情况毫无疑问。 我不想检测字符串是否包含任何链接,即http、ftp、https和www等的所有组合

基本上我想防止字符串包含任何链接

我目前使用:

name.split(/\s+/).find_all { |u| u =~ /^https?:/ }).count
防止字符串中出现任何链接的最佳方法是什么?

我最后使用了:

errors.add(:name, "Your name cannot contain links") if name.match /\b(?:(?:mailto:\S+|(?:https?|ftp|file):\/\/)?(?:\w+\.)+[a-z]{2,6})\b/
这在几乎所有情况下都非常有效。
你是在谈论HTML链接(一个标签)还是仅仅是一个URL字符串?通过拆分空白,然后搜索,你没有利用正则表达式的功能。这更好:
如果name=~/\bhtps?:/
则失败,尽管这不会捕获所有链接情况。Idk您的需求是什么--“www.example.com”算吗?“example.com”怎么样?如果是这样,那就没有希望了,因为有太多的域,维护将是一场噩梦。你可以用regexen来做这件事,但是如果你的目标是阻止用户显示这样的链接,他们总会找到一种方法来绕过它。比如:htp://stakovelow。c o malso,可能重复@m_x yes我的目标是阻止用户提交内容中的任何链接。尽我所能