繁体   English   中英

正则表达式失败javascript

[英]Regular Expression Failure javascript

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

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

表达:

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

谢谢您的考虑。

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

/^  ...  \.)/
         ^^

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

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

现场演示

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

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

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

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

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

^(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 . --------^

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

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

为了满足此"http://devices/" ,java中的正则表达式至少是:

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

这些是/开头和结尾代码分隔符吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM