我有一个表格应该采用以下格式的网址:
http://website.com/test/1
http://website.com/test/1/
我的正则表达式目前是这样的:
url.match(/website.com(.*)/);
我希望捕获组匹配内容并自动删除最后一个" /"在URL的末尾,这样,无论是否存在,它总会返回" / test / 1" 。怎么样?
答案 0 :(得分:0)
尝试使用以下正则表达式
url.match(/website.com(.*)\b/);
它适用于您的情况。如果不是,请告诉我。
答案 1 :(得分:0)
我会给你一个正则表达式,用于检查你网址中的所有内容:
(https?:\/\/)?(([A-Za-z0-9]+)((\.[a-z]{1,3})))(\/\w+)\/(\d)\/?
这是正则表达式的作用:
首先,它会检查网址中是否存在http://或https://:(https?:\/\/)?
https?
基本上意味着:如果http有" s"在它的末尾,因此s?
(可以是任何角色,但是:a? b? c? 1? 2? 3?
)。它与#34;?"相同。在(https?:\/\/)
:(https?:\/\/)?
之后,如果整个http://或https://存在,它会在这里检查。这意味着像这样的URL:example.com(开头没有http或https)也会匹配。
然后我们有表达式的整个部分:(([A-Za-z0-9]+)((\.[a-z]{1,3})))
。让我们分解一下:
([A-Za-z0-9]+)
这里检查任何字母或数字(例如:"网站"),(大写或小写),直到遇到:((\.[a-z]{1,3}))
,它检查任何小写字母只有最大值3个字母(例如:.com)。
所以(([A-Za-z0-9]+)((\.[a-z]{1,3})))
会匹配,仅举几个例子:stackoverflow.com,twitter.com,google.se但不是example.online,因为{1,3}
基本上说&#34 ;在1到3"只有字母。
然后我们有最后一部分:(\/\w+)\/(\d)\/?
。首先,我们(\/\w+)
检查斜杠后面的任何单词,例如:" / test"。 \w
基本上意味着检查任何单词。
之后检查" /":\/
,最后是" /"后面的数字(\d)
,例如:" / 1"。在这个正则表达式的最后,我们有一个\/?
,它只检查是否有斜杠。
所以在PHP中,这个正则表达式可以像这样使用:
$pattern = "/(https?:\/\/)?(([A-Za-z0-9]+)((\.[a-z]{1,3})))(\/\w+)\/(\d)\/?/";
$url = "https://example.com/user/1/";
if(preg_match($pattern, $url, $matches)){
echo $matches[1]; // Will echo https://
echo $matches[2]; // Will echo "example.com"
echo $matches[3]; // Will echo "example"
echo $matches[4]; // Will echo ".com"
echo $matches[5]; // Will echo ".com"
echo $matches[6]; // Will echo "/user"
echo $matches[7]; // Will echo "1"
var_dump($matches); // Will dump the array
}
希望这有帮助。
编辑;当然,正则表达式可以用更多的方式编写,对于不同的语言也是如此。但这只是我通常如何构建我的正则表达式的一个例子。我总是对它进行构造并将其分解为部分,这样我就可以更容易地看到它是什么,并试着想出我想要在正则表达式中检查的所有内容。