質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

2610閲覧

replace()、後方参照の書き方で質問です

NS-DOS

総合スコア110

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2016/08/20 23:08

下らない質問として通報されてしまうかもしれませんが、どうにも気になるので、初めて質問させていただきます。

JSの中でアイコン用スプライト画像のCSSコードを生成しています。
background-positionのみを指定した個別クラスの数には300程度を想定していて、

CSS

1.icon000{ 2 background-position:0px 0px; 3} 4/* 実際には圧縮された状態です */ 5```といった``0px``の部分を、生成後さらに圧縮するため、一括で``0``に置換するのに 6```JavaScript 7/* A案 */ cssCode = cssCode.replace(/( |:)(0px)/g,'$010'); 8/* B案 */ cssCode = cssCode.replace(/( 0|:0)(px)/g,'$1'); 9// どちらも主要ブラウザで動作することは確認しています

という二つの書き方をしてみましたが、どちらがイケてる書き方でしょうか。
あるいはもっとスマートな書き方はありますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

あくまで一例ですが、私が書くなら

javascript

1cssCode = cssCode.replace(/([ :]0)px/g, '$1');

こうでしょうか。1文字であれば文字クラスが使えます。
もしくは条件次第では以下の方法でも良さそうです。

javascript

1cssCode = cssCode.replace(/\b0px/g, '0');

\b は単語境界です。例えば :0px にはマッチしますが :10px にはマッチしません。
この方法だと後方参照が必要なくなります。

投稿2016/08/21 01:12

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NS-DOS

2016/08/21 07:27

分かり易い回答ありがとうございます。 \bは知りませんでした。 もっと勉強したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問