これは私が思う簡単な質問です。
JavaScriptの正規表現を使用して、別の文字列の文字列の出現を検索しようとしています:
var content ="Hi, I like your Apartment. Could we schedule a viewing? My phone number is: ";
var gent = new RegExp("I like your Apartment. Could we schedule a viewing? My", "g");
if(content.search(gent) != -1){
alert('worked');
}
これは?
文字のために機能しません。..\
でエスケープしようとしましたが、機能しません。特殊文字としてではなく、?
をそのまま使用する別の方法はありますか?
2つのバックスラッシュでエスケープする必要があります
\\?
詳細はこちらをご覧ください:
http://www.trans4mind.com/personal_development/JavaScript/Regular%20Expressions%20Simple%20Usage.htm
ダブルスラッシュを使用する必要があります。
var regex = new RegExp("\\?", "g");
どうして? JavaScriptでは、\
は文字列内の文字をエスケープするためにも使用されるため、「\?」になる:"?"
"\\?"
は"\?"
になります
引用符の代わりにスラッシュで正規表現を区切り、疑問符をエスケープするために単一のバックスラッシュで区切ることができます。これを試して:
var gent = /I like your Apartment. Could we schedule a viewing\?/g;
knownパターンがある(つまり、変数を使用してRegExpを構築しない)場合は常に、literalsingleバックスラッシュのみを使用して特別な正規表現メタ文字をエスケープする必要がある正規表現表記法:
var re = /I like your Apartment\. Could we schedule a viewing\?/g;
^^ ^^
RegExpを動的に構築する必要があるときはいつでも、RegExp
コンストラクター表記を使用する必要があります二重バックスラッシュそれらがリテラルのバックスラッシュを示すために:
var questionmark_block = "\\?"; // A literal ?
var initial_subpattern = "I like your Apartment\\. Could we schedule a viewing"; // Note the dot must also be escaped to match a literal dot
var re = new RegExp(initial_subpattern + questionmark_block, "g");
必読: RegExp:Description at MDN。