JavaScriptの経験はあまりありませんが、@
または#
を使用する代わりにを使用するタグシステムを作成しようとしています/
。
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
の/
代わりにどのように使用できますか#
。を実行var slash = '/'
して追加しようとしました+ slash +
が、失敗しました。
JavaScriptの経験はあまりありませんが、@
または#
を使用する代わりにを使用するタグシステムを作成しようとしています/
。
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
の/
代わりにどのように使用できますか#
。を実行var slash = '/'
して追加しようとしました+ slash +
が、失敗しました。
回答:
このように脱出できます。
/\//ig; // Matches /
または単にindexOfを使用します
if(str.indexOf("/") > -1)
使用したい/
場合は、でエスケープする必要があります\
var word = /\/(\w+)/ig;
正規表現では、「/」はエスケープする必要のある特殊文字です(AKAは、その前に\を配置することでフラグが立てられるため、機能する可能性のある特殊機能が無効になります)。
必要なものは次のとおりです。
var word = /\/(\w+)/ig; // /abc Match
ここで正規表現の特殊文字について読んでください:http://www.regular-expressions.info/characters.html
次のように、スラッシュを文字グループで囲むことにより、スラッシュの特別なJS処理を回避することもできます。
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const word = /[/](\w+)/ig;
"/dev/null".match(word) // => ["/dev", "/null"]
/[/]/
があり/\//
ます。末尾の区切り文字を。よりも明確に区別します。
/[/]/
は読みやすく機能しますが、残念ながら、一部のRegExバリデーターは、文字グループ内であっても「エスケープされていない区切り文字はバックスラッシュでエスケープする必要があります」と報告します。それで、私は醜い形に戻りました。/\//
あなたがそれに先行することによってそれを逃れることができます\
(それを作る\/
)、またはあなたが使用できるnew RegExp('/')
ために正規表現をエスケープ避けます。
JSFiddleの例を参照してください。
'/'.match(/\//) // matches /
'/'.match(new RegExp('/') // matches /
私にとっては、/
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も同様にを使用できる必要があります(\/)
。
私は、抽出テキストがで区切られたときに、上記に関連した2つの問題に遭遇\
して/
、および使用以外の両方に合うソリューション、見つかっnew RegExp
必要で、\\\\
開始時に。これらの調査結果はChromeとIE11にあります。
正規表現
/\\(.*)\//g
動作しません。//
エスケープ文字にもかかわらず、コメントの始まりとして解釈されると思います。正規表現(一般的ではありませんが、私の場合も同様に有効です)
/\b/\\(.*)\/\b/g
どちらも動作しません。2番目/
はエスケープ文字にもかかわらず正規表現を終了すると思います。
私にとってうまくいくのは、の16進表現である/
として\x2F
表現することです/
。を使用するよりも効率的で理解しやすいと思いますnew RegExp
が、もちろん、16進コードを識別するためのコメントが必要です。