使用正则表达式我试图将用户的输入限制为以下场景之一:
然而,一旦最后一个案例得到满足,它将接受“instagram.com”之前的任何随机字符串,这不是不可能的,但更多的是我自己的安心。我正在使用的正则表达式如下:
control.value.match(/(?:(?:http|https):\/\/)?(?:www.)?instagram.com\/([A-Za-z0-9-_]+)/igm)
我想拥有它,以便上述案例中只有一个能够验证。在此先感谢您的帮助。
答案 0 :(得分:3)
如果你把^放在你的正则表达式的开头,它将不会接受垃圾。因为^是行的开头
答案 1 :(得分:3)
如果你想确保整个内容与正则表达式匹配,有几种方法,但我最喜欢的只是使用正则表达式。
您可以使用行开头^
和行结束$
字符。这些被称为anchors
,您可以在http://www.regular-expressions.info/anchors.html
您的代码如下所示:
control.value.match(/^(?:(?:http|https):\/\/)?(?:www.)?instagram.com\/([A-Za-z0-9-_]+)$/igm)
这只能起作用,因为您正在查看单行文本。您的m
标记意味着多行文字(使用网址没有任何意义),因此您应该仔细查看http://www.regular-expressions.info/modifiers.html。在javascript中,整个表达式的修饰符在结尾处作为标志放置。您可以在http://www.rexegg.com/regex-modifiers.html找到相关示例。
在您的示例中,您的标记为igm
,并在结束/
之后显示。