スラッシュと正規表現の一致


90

JavaScriptの経験はあまりありませんが、@または#を使用する代わりにを使用するタグシステムを作成しようとしています/

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match

/代わりにどのように使用できますか#。を実行var slash = '/'して追加しようとしました+ slash +が、失敗しました。


1
タイトルを変更してください。そして、あなたは本当に何をしようとしていますか?あなたの質問を読んだ後、私はまだわかりません。
OptimusCrime 2013年

私は上手く理解できていない気がします。
John Strickler

回答:


123

このように脱出できます。

/\//ig; //  Matches /

または単にindexOfを使用します

if(str.indexOf("/") > -1)

ベンありがとう、私もそれを試しましたが、最後に別の\を追加しました。
iBrazilian2 2013年

21

あなたはエスケープする必要がある/\

/\//ig // matches /

6

使用したい/場合は、でエスケープする必要があります\

var word = /\/(\w+)/ig;

6

正規表現では、「/」はエスケープする必要のある特殊文字です(AKAは、その前に\を配置することでフラグが立てられるため、機能する可能性のある特殊機能が無効になります)。

必要なものは次のとおりです。

var word = /\/(\w+)/ig; //   /abc Match

ここで正規表現の特殊文字について読んでくださいhttp//www.regular-expressions.info/characters.html


17
「/」は正規表現の特殊文字ではありません。ただし、正規表現の開始位置と終了位置を区切るのはJavaScriptの特殊文字です。
sokkyoku 2016年

5

次のように、スラッシュを文字グループで囲むことにより、スラッシュの特別なJS処理を回避することもできます。

const start = /[/]/g;
"/dev/null".match(start)     // => ["/", "/"]

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]

2
+1、エスケープを回避するために文字セットを使用すると、正規表現が1文字長くなりますが、読みやすくする価値/[/]/があり/\//ます。末尾の区切り文字を。よりも明確に区別します。
Dem Pilafian 2018年

2
/[/]/は読みやすく機能しますが、残念ながら、一部のRegExバリデーターは、文字グループ内であっても「エスケープされていない区切り文字はバックスラッシュでエスケープする必要があります」と報告します。それで、私は醜い形に戻りました。/\//
DemPilafian19年


1

私にとっては、/C#の日付で一致させようとしていました。私はそれを使用するだけでそれをしました(\/)

string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";

Match m = Regex.Match(text, pattern);

if (m.Success) 
{ 
    Console.WriteLine(match.Groups[0].Value);  // 4/1/2018
}
else
{
    Console.WriteLine("Not Found!");
}

JavaScriptも同様にを使用できる必要があります(\/)


反対票を投じて、説明してくれませんか?これは機能し、テストを通じてそれを証明しました。
vapcguy

1
事故だったと思います、ごめんなさい。元に戻そうとしましたが、回答を編集しないと投票がロックされていると表示されます。私が見る唯一のことは、あなたが使用していないように見えるグループをキャプチャするログを持っているということです。すべてが括弧で囲まれている理由は何ですか?
ライアンクイン

1
@RyanQuinn説明ありがとうございます。括弧を使用して物事をグループ化し、期待していた特定の数字を表しました。また、テストに使用していたサイトでそれらが必要なよう でした。regexr.com投稿 を編集したので(最後にスペースを追加しただけです)、必要に応じて反対票を削除できるはずです。
vapcguy

0

私は、抽出テキストがで区切られたときに、上記に関連した2つの問題に遭遇\して/、および使用以外の両方に合うソリューション、見つかっnew RegExp必要で、\\\\開始時に。これらの調査結果はChromeとIE11にあります。

正規表現

/\\(.*)\//g

動作しません。//エスケープ文字にもかかわらず、コメントの始まりとして解釈されると思います。正規表現(一般的ではありませんが、私の場合も同様に有効です)

/\b/\\(.*)\/\b/g

どちらも動作しません。2番目/はエスケープ文字にもかかわらず正規表現を終了すると思います。

私にとってうまくいくのは、の16進表現である/として\x2F表現することです/。を使用するよりも効率的で理解しやすいと思いますnew RegExpが、もちろん、16進コードを識別するためのコメントが必要です。


0

スラッシュは特殊文字であるため、スラッシュを機能させるには、スラッシュの前に円記号を追加する必要があります。

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";

ここで/は/の検索を表しますこのようにあなたは

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.