3

我试图理解这个 javascript 正则表达式。

谁能给我一个关于这个正则表达式部分的解释?

location.href.match(/^http:\/\/(www\.)?example.com/i)
4

4 回答 4

4

让我们把它分成几部分:

^http:\/\/= 字符串必须以 . 开头http://。反斜杠在那里,因为如果他们不这样做,斜杠将结束正则表达式模式。

(www\.)?= 如果存在则匹配www.(这就是问号的用途)

example.com= 字符串后面必须跟example.com

i= 不区分大小写

所以这些是可能的匹配:

  • http://example.com
  • http://www.example.com
  • http://www.EXAMPLE.COM
  • http://www.example.com/some/page/

不幸的是,正则表达式与 HTTPS 协议不匹配。我们可以使用与www.使用问号相同的方法:

/^http(s)?:\/\/(www\.)?example.com/i

于 2012-12-17T10:27:17.653 回答
2
^           - start of line
http:       - http:
\/\/        - //
(www\.)?    - www. 0 or 1 time
example.com - example.com

i标志表示整个表达式不区分大小写,因此HTTP://WWW.EXAMPLE.COM也将匹配。

于 2012-12-17T10:27:40.847 回答
1
/^http:\/\/(www\.)?example.com/i

1) ^ - carret (matches start of line / string)
2) http: - matches the actual 'http:' string
3) \/\/ - matches // (needs escaping with \)
4) (www\.)? - can contain or not the string 'www.' (? = 0 or 1 times)
5) example.com - matches the actual 'example.com' string
6) trailing i - case insensitive
于 2012-12-17T10:28:32.470 回答
1

正则表达式:

/^http:\/\/(www\.)?example.com/i

As explained in javascript the regexp is in the forme (http://www.w3schools.com/js/js_obj_regexp.asp) :

/pattern/modifiers

So the pattern :

^http:\/\/(www\.)?example.com

^ start with

http:\/\/ 'http://' with the slashes escaped

(www\.)? 0 or 1 time 'www.'

example.com 'example', any char exept newline, 'com'

if you want 'example.com' only, use example\.com

The modifier :

i case insensitive

于 2012-12-17T10:31:44.403 回答