回答:
通常、ドットは改行以外のすべての文字と一致します。
機能し.*ない場合は、「ドットも改行に一致する」オプションを設定します(またはを使用(?s).*)。
「dotall」オプションのないJavaScriptを使用している場合は、を試してください[\s\S]*。これは、「空白または空白以外の任意の数の文字に一致する」、つまり「任意の文字列に一致する」ことを意味します。
JavaScriptでのみ機能する(他の正規表現フレーバーでは認識されない)別のオプションは、[^]*任意の文字列にも一致します。しかし[\s\S]*、おそらく移植性が高いため、より広く使用されているようです。
.*は一致しません\nが、\n0文字に一致するためだけを含む文字列を作成します。
(?s).*私の作品は、ニューラインを含むすべてにマッチしました
*(のように/.*(?:)/)何かを追加するか、正規表現コンストラクタ(var foo = new RegExp(".*"))を使用することで簡単に回避できます。
(.*?) 何にでもマッチします-私は何年も使っています。
("title":".*?")
[\s\S]*またはを使用します[^]*。
w+も足りないので結局を使い.+ます。幸いにも、私を噛むために戻ってきていません。
を使用し.*、実装で同等の単一行を使用していることを確認して、行末で一致させます。
ここに素晴らしい説明があります-> http://www.regular-expressions.info/dot.html
JavaScriptの場合、最良かつ最も簡単な答えは/.*/のようです。
他の人が示唆しているように、/(。*?)/も機能しますが、/。* /の方が簡単です。パターン内の()は、私が見ることができる限り、またはエンディングである限り、必要ありません。完全に一致するもの(空の文字列を含む)
非解決策:
/ [\ s \ S] /は空の文字列と一致しないため、解決策ではありません。
/ [\ s \ S] * /空の文字列にも一致します。ただし、問題があります。コードで使用すると、「* /」がコメントの終わりとして解釈されるため、そのようなコードをコメント化することはできません。
/([\ s \ S] *)/は機能し、コメントの問題はありません。しかし、/.*/よりも理解するのは長くて複雑です。
2018仕様ではsフラグ(エイリアス:dotAll)が提供されているため、.改行を含むすべての文字に一致します。
const regExAll = /.*/s; //notice the 's'
let str = `
Everything
in this
string
will
be
matched. Including whitespace (even Linebreaks).
`;
console.log(`Match:`, regExAll.test(str)); //true
console.log(`Index Location:`, str.search(regExAll));
let newStr = str.replace(regExAll,"🐔");
console.log(`Replaced with:`,newStr); //Index: 0
上記のコードはChromeで機能しますが、sフラグはまだFirefoxに実装されていませんが、まもなく実装されます。
<?php
$str = "I bought _ sheep";
preg_match("/I bought (.*?) sheep", $str, $match);
print_r($match);
?>
使用をお勧めします /(?=.*...)/g
例
const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true
const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true
const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true
const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text
regex101を使用してテストする
正直なところ、回答の多くは古く、「/.*/ i」を使用して文字の内容に関係なく任意の文字列をテストするだけで十分にすべてが得られることがわかりました。
.*うまくいくはずです。実際のコードを貼り付けられますか?