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

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

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

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

正規表現

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3527閲覧

rgbを正規表現で

aaaaaaaa

総合スコア501

JavaScript

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

正規表現

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/11/12 11:08

javascriptにおいて、下記のようにjqueyで取得した要素の背景色(background-color)を正規表現でマッチさせたいのですが
どうやってもマッチできません。背景色は、rgb(x,x,x)のような形になっています。
このrgb(x,x,x)を正規表現でマッチさせるにはどうすればよいのでしょうか。
マッチさせるさい、RとGとBに相当する値はグループ化させたいと考えております。

javascript

1 2var color = $(this).css('background-color'); 3var ex = /^rgb\((\d[1,3]),(\d[1,3]),(\d[1,3])\)/; 4var result = color.match(ex); 5for(var i = 0, len = result.length; i < len; i++) { 6 console.log('マッチしたやつ',result[i]); 7};

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13152484638

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

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

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

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

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

guest

回答1

0

ベストアンサー

実際Chromeで見たところ、以下の2点が取れない原因でした。

  • rgbではなく、rgbaで取れる事がある
  • 数値とカンマだけではなく、スペースが入り込む事がある

var ex = /^rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})/ // ["rgba(0, 0, 0", "0", "0", "0"]

2行目を上記のように書き換えると動きましたよ。

投稿2015/11/12 11:21

miyabi-sun

総合スコア21158

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

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

miyabi-sun

2015/11/12 23:29

??? どのような意図でこのレスをするに至ったか理由がわからないので、 まずはそこをお聞きしたいです。 私は以下の理由で上の正規表現で十分と判断しました ・正規表現は文法をチェックする用途にも使えるが、別のロジックですべき ・「妥当な」rgbとrgbaがどちらも引数の3つまではR、G、Bの順番である ・そもそも他のケースをjQueryが返すか知らない ・jQueryがrgbやrgbaを返す場合、それなりに規則性のある文字列になるだろう ・イレギュラーパターンまで同じ正規表現で頑張り続けるのは労力の無駄遣いなのでif文で対処すべき そもそも論「#xxx形式」や「#xxxxxx形式」で来たらどうするのでしょうね。 さっきの正規表現に盛り込むのでしょうか? こういう話でなければ申し訳ありません。
think49

2015/11/14 13:25 編集

読み直してみたところ、正規表現上で括弧で閉じていなかった事に気が付きました…。失礼しました。 > そもそも論「#xxx形式」や「#xxxxxx形式」で来たらどうするのでしょうね。 jquery-2.1.4.js において jQuery#css() は getComputedStyle を得ます。 https://github.com/components/jquery/blob/master/jquery.js#L5553 https://github.com/components/jquery/blob/master/jquery.js#L5914 https://github.com/components/jquery/blob/master/jquery.js#L6010 getComputedStyle は解決値(resolved value)得ます。 http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html#dom-Window-getComputedStyle 解決値は一部の例外を除き、算出値(computed value)と同義です。 http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html#resolved-value <color> の解決値/算出値は rgb(), rgba() と定められている為、jQuery#css(’background-color’) は "rgb()", "rgba()" しか返しません。 http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html#serializing-css-values rgb(), rgba() の Syntax は CSS Color Module Level 4 にありますが、小数/指数まで含めると大変なので CSS Color Module Level 3 準拠の整数値のみでも良いと思います。 http://www.hcn.zaq.ne.jp/___/WEB/css-color-ja.html#rgb-functions --- function parseCssRGB (string) { var rgb = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/.exec(string); return rgb ? {red: rgb[1], green: rgb[2], blue: rgb[3]} : null; } function parseCssRGBA (string) { var rgba = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/.exec(string); return rgba ? {red: rgba[1], green: rgba[2], blue: rgba[3], alpha: rgba[4]} : null; }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問