すべてのドットとスペースを置き換えようとしています"
var name = "C. S. Lewis"
そしてそれらを_
そしてそれをに変換します"C_S_LEWIS"
これは私が試したものですが、すべてをアンダースコアに変換します ( _
)
var mystring = "C. S. Lewis";
var find = ".";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "_"));
すべてのドットとスペースを置き換えようとしています"
var name = "C. S. Lewis"
そしてそれらを_
そしてそれをに変換します"C_S_LEWIS"
これは私が試したものですが、すべてをアンダースコアに変換します ( _
)
var mystring = "C. S. Lewis";
var find = ".";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "_"));
これは、ドットを正規表現でエスケープする必要があるためです(文字クラスの一部でない限り)。この式は機能するはずです:
var regex = /[.\s]+/g;
alert(mystring.replace(regex, '_'))
これは、少なくとも1つのピリオドまたはスペースのシーケンスと一致し、その後の.replace()
呼び出しで1つのアンダースコアに置き換えられます。
ところで、これは新しい文字列をに保存しませんmystring
。そのためには、置換操作の結果を同じ変数に割り当てる必要があります。
mystring = mystring.replace(regex, '_')
は.
「任意の文字」を意味します。リテラル ドットを取得するために使用します。これは、リテラル アンダースコアの後にリテラル ドットを取得するために、文字列に配置する必要が\.
あることを意味します。しかし、最初に文字列を作成する理由がわかりません-これを行うことができます:regex
\\.
var find = /\./g;
もちろん、それはあなたが探しているものではありません - ドットだけではなく、ドットとそれに続くスペースだけが必要です。それは違う:
var find = /\.\s+/g;