数字が文字の隣にあるかどうかを確認する必要があり、そうであればアンダースコアを追加します。
例えば:
Grapes23 --> Grapes_23
私はかなり長い間試してきましたが、正規表現は初めてです。私はこれを試しましたが、うまくいきません:
str=str.replace(/([A-z]+)([0-9])/i, '_'); //if number next to letter, add underscore
助けていただければ幸いです、ありがとう!
数字が文字の隣にあるかどうかを確認する必要があり、そうであればアンダースコアを追加します。
例えば:
Grapes23 --> Grapes_23
私はかなり長い間試してきましたが、正規表現は初めてです。私はこれを試しましたが、うまくいきません:
str=str.replace(/([A-z]+)([0-9])/i, '_'); //if number next to letter, add underscore
助けていただければ幸いです、ありがとう!
文字の後に数字が続くものを探します。
str = str.replace(/([a-z])(?=[0-9])/ig, '$1_');
この正規表現の仕組み:
([a-z])
は任意の小文字で、括弧で囲むと「一致するグループ」になります(?=[0-9])
「先読み」です。それは基本的に「[0-9](任意の数字)が続く」ことを意味しますi
大文字と小文字を区別しないことを意味します (それ以外の場合は を使用する必要があります[a-zA-Z]
)g
グローバルを意味するか、見つかったすべての一致を置き換えます(デフォルトでは最初のもののみが置き換えられます)$1
は「最初に一致したグループ」、または上記の最初の箇条書きに一致した文字を意味します。str.replace(/([a-zA-Z])(\d)/g,'$1_$2')
あなたのひもで実行してください。これは、任意の文字の後に数字が続くものを探し、文字と数字の両方を取得して (括弧に注意してください)、2 つの間のアンダースコアに置き換えます。$1 と $2 は、正規表現の一致で見つかったキャプチャされた文字と数字へのコールバックです。