2017-07-13 7 views
1

空白文字の間にアルファベット以外の文字を配置する必要があります。 私はこれをRegExpを使って行いたいと思います。私はそれをすべて選択するようにしています(/(^a-zA-Z)/g)。
置き換えの中で元のマッチを使用する方法はありますか? (何かのようなもの) str.replace(/(^a-zA-Z)/g,/ \m /); 私はそれらのすべてをループしますが、実際にはそれが可能であることを知りたいのです。置き換えで一致文字を使用

+0

[ 'String.prototype.replace()'](https://developer.mozilla.orgに機能を置き換えるチェックすることができます/ ja-JP/docs/Web/JavaScript/Reference/Global_Objects/String/replace) – Andreas

+0

はい、私はプロトタイプからそのことを知っていますが、それは文字列を再利用するのに役立ちません.... – WIPocket

+0

しかし、フォローw); – Andreas

答えて

1

はい。 String.prototype.replace()は検索のためにRegExp関数を与えることができます。置き換えを処理する関数を与えることもできます。

この関数は、最初のパラメータとして一致を返し、変更したいものを返します。

const original = 'a1b2c'; 
 
const replaced = original.replace(/([^a-z])/gi, match => ` ${match} `); 
 
console.log(replaced);

あなただけのシンプルな何かをする必要がある場合、あなたはまた、単に選択したグループ(括弧のセット)に基づいて交換する$n値($1$2、など)を使用することができます。

const original = 'a1b2c'; 
 
const replaced = original.replace(/([^a-z])/gi, ' $1 '); 
 
console.log(replaced);

+0

グループは1から数えられますか? (グループが1つだけの場合は、$ 1という意味になります) – WIPocket

+0

はい、配列のようなものの通常の0インデックスとは対照的に、1インデックスになります。ですから、 '$ 1'は常に最初です。これは実際には、言語に関係なく、正規表現の普遍的な規約です。 – samanime

1

はい、可能です。あなたはグループで正規表現を使用することができます。

var text = '2apples!?%$'; 
 
var nextText = text.replace(/([^a-zA-Z])/g, ' $1 '); 
 

 
console.log(nextText);

関連する問題