以下字符串是否有理由使下面的正则表达式失败?
字符串:"http://devices/"
表达式:
/^(http:\/\/|https:\/\/|ftp:\/\/|www.|pop:\/\/|imap:\/\/){1}([0-9A-Za-z]+\.)/.test(input.val())
感谢您的考虑。
答案 0 :(得分:1)
是的,由于正则表达式中的最后一个点.
,它会失败。
/^ ... \.)/
^^
您要验证的字符串中没有一个。
http://devices
^ Should be a dot, not a forward slash
如果您打算使用正则表达式来执行此操作,我可能更喜欢使用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]+)?$
那些/
是在开始和结束时的分隔符吗?