2017-04-09 9 views
-1

私は、フォームは次の形式でURLを取得する必要があります。正規表現が一致し、必要に応じて、URLの末尾に/を削除するには

url.match(/website.com(.*)/); 

I:私の正規表現は、現在この

http://website.com/test/1 

http://website.com/test/1/ 

ある

キャプチャグループにコンテンツを一致させ、URLの最後にある最後の "/"を自動的に削除して、存在するかどうかにかかわらず、常に "/ test/1"を返すようにします。どうやって?

+0

'url.match(/website\.com(。*?)\ /?$ /);' –

答えて

0

は、それはあなたのケースのために働く必要があり

url.match(/website.com(.*)\b/);

、以下の正規表現を使用してみてください。そうでない場合は教えてください。

+0

お試しください。 –

0

Hmm ... Regexs 'は本当に「削除」できません/ explode文字。たとえば、URLを入力できるフィールドがあるとします。 「/」を「URLの最後に削除する」というエラーメッセージを表示するか、またはJavascriptで許可しないようにすると、ユーザーが「/」を追加するのを制限することができます。 "/"が削除されます)。

私はあなたのURLにあるすべてのものをチェックする正規表現の式あげる:

(https?:\/\/)?(([A-Za-z0-9]+)((\.[a-z]{1,3})))(\/\w+)\/(\d)\/? 

をここでは、この正規表現表現が何をするかです:

まずそれは、HTTPかどうかをチェックします://またはhttps://はURLにあります:(https?:\/\/)? https?は、基本的には:httpの末尾に「s」がある場合は、s?(いずれの文字でも構いませんが、a? b? c? 1? 2? 3?)です。それは "?"と同じです(https?:\/\/)(https?:\/\/)?の後には、ここではhttp://またはhttps://が存在するかどうかを確認します。つまり、example.comのようなURL(最初は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})))は、基本的に「1~3文字の間」と書かれている{1,3}のため、stackoverflow.com、twitter.com、google.seではなくexample.onlineと一致します。

最後の部分は(\/\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 
} 

・ホープ、このことができます。

編集;もちろん、正規表現はさまざまな方法で記述することができますが、言語ごとに異なっています。しかし、これは私が正規表現をどのように構築するかの例です。私はいつもそれを構造化し、部品に分解して、何が何であるかをより簡単に見て、正規表現でチェックしたいすべてを考えようとします。

関連する問題