正则表达式失败javascript

时间:2014-08-07 16:32:14

标签: javascript regex

以下字符串是否有理由使下面的正则表达式失败?

字符串:"http://devices/"

表达式:

/^(http:\/\/|https:\/\/|ftp:\/\/|www.|pop:\/\/|imap:\/\/){1}([0-9A-Za-z]+\.)/.test(input.val())

感谢您的考虑。

4 个答案:

答案 0 :(得分:1)

是的,由于正则表达式中的最后一个点.,它会失败。

/^  ...  \.)/
         ^^

您要验证的字符串中没有一个。

http://devices 
              ^ Should be a dot, not a forward slash

Live Demo

如果您打算使用正则表达式来执行此操作,我可能更喜欢使用RegExp Object来避免所有转义,或者使用非捕获组将前缀组合在一起。

/^((?:https?|ftp|pop|imap):\/{2}|www\.)  ...  $/

答案 1 :(得分:0)

字符串中的最后一个字符必须是句点。见“\。”在正则表达式的末尾。

您可以使用http://rubular.com/来测试简单的正则表达式及其匹配项。

答案 2 :(得分:0)

它失败的原因是因为,你正在使用:

^(http:\/\/|https:\/\/|ftp:\/\/|www.|pop:\/\/|imap:\/\/){1}([0-9A-Za-z]+\.)

你应该使用:

^(http:\/\/|https:\/\/|ftp:\/\/|www.|pop:\/\/|imap:\/\/){1}([0-9A-Za-z]+.)
                                     You don't have to escape . --------^

答案 3 :(得分:0)

您需要使用$关闭正则表达式。

在最后两个:.),此点应该是可选的,因为验证需要它。

至少满足这个"http://devices/" java中的正则表达式是:

^((http://)|(https://)|(ftp://)|(pop://)|(imap://)){1}(www.)?([0-9A-Za-z]+)(.)?([0-9A-Za-z]+)?$

那些/是在开始和结束时的分隔符吗?