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

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

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

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

jQuery

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

Q&A

解決済

3回答

309閲覧

replaceパラメーター正規表現

rainbowsix002

総合スコア39

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/06/28 00:44

編集2018/06/28 00:52

下記のパラメータの

str = index.htm?id=01&name=john&number=11,21,32&class=01 var result = str.replace(/●●●●●●/g, 'number=01');

number=数字,数字,数字 をreplaceして()
number=01にしたいですが。
●●●●●●に何を入れればいいでしょうか?
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2018/06/28 00:47

このままでは丸投げ質問(非推奨質問の代表格です)となってしまうので、自身が調べていく中でやってみたコードをご提示ください。その上で「何が」「どう」分からなかったのか記載してください。 https://teratail.com/help/question-tips
m.ts10806

2018/06/28 00:48

用途が書いてないと明確な回答がつきにくいです。replaceしてどう使いたいのか、どこからこのパラメータが来るのかも含めて具体的に記載してください。
rainbowsix002

2018/06/28 00:52

失礼しました。内容修正しました。
guest

回答3

0

こんにちは。

"number=数字" だったり、 "number=数字,数字,数字" のように、 number パラメータの値が
「1個以上の、カンマで区切られた数字」であるときのみ"number=01" に置き換えたいのであれば、
以下になります。

javascript

1str.replace(/number=\d+(,\d+)*/, 'number=01');

以下、上記をテストするコードです。(同じものを https://jsfiddle.net/jun68ykt/nqhgxfw8/22/ にも上げました)

javascript

1// 変換対象の正規表現 2const regex = /number=\d+(,\d+)*/; 3 4// 変換される例1 5var str = 'index.htm?id=01&name=john&number=11,21,32&class=01'; 6var result = str.replace(regex, 'number=01'); 7 8console.log(result); // => index.htm?id=01&name=john&number=01&class=01 9 10// 変換される例2 11str = 'index.htm?id=01&name=john&number=11&class=01'; 12result = str.replace(regex, 'number=01'); 13 14console.log(result); // => index.htm?id=01&name=john&number=01&class=01 15 16// 変換されない例 17str = 'index.htm?id=01&name=john&number=AA,BB,CC&class=01'; 18result = str.replace(regex, 'number=01'); 19 20console.log(result); // => index.htm?id=01&name=john&number=AA,BB,CC&class=01 21 22

以上参考になれば幸いです。

投稿2018/06/28 01:52

編集2018/06/28 10:00
jun68ykt

総合スコア9058

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

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

rainbowsix002

2018/06/28 02:23

参考になります!今後使わせていただきます。ありがとうございます。
jun68ykt

2018/06/28 02:36

解決されたようで、よかったです。 以下、補足です。 何かの問題解決のために正規表現を書こうとするときに、検査対象となる文字列(このご質問ではURLのクエリパラメータ)のうち、「どれにマッチさせたいか?」と考えるのと同時に、「どれにはマッチさせたくないか?」を考えることが重要です。   ですので、今後、正規表現についてご質問をされる際には、「こういう文字列にはマッチさせたいが、こういうのにはマッチさせたくない」という感じで、マッチさせたくないほうの要件も明示されるとよろしいかと思います。(そうすると、回答者にとって、何を考えればよいかが明確になります。)
rainbowsix002

2018/06/28 02:38

確かに!ありがとうございます。
guest

0

javascript

1str.replace(/number=[\d]+?,[\d]+?,[\d]+?/g, 'number=01');

投稿2018/06/28 00:55

papinianus

総合スコア12705

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

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

rainbowsix002

2018/06/28 01:00

説明が足りなくてすみません。 number=数字  number=数字,数字,数字,数字,数字 なども含めて対応したいです。
papinianus

2018/06/28 01:38

mts10806さんの修正依頼を再確認なさったほうがいいと思います。BAとしたことから私には「number=&」のパターン(数字が1つもないパターン)というところまで要件が拡張されたように受け取れます。
x_x

2018/06/28 05:37

些末かもしれませんが \d や [0-9] ではなく [\d] となっているのには理由があるのでしょうか?
papinianus

2018/06/28 06:42

積極的なあるいは必然的な理由はありません。なんとなく自分にとっての可読性を高めるためです。()だと参照したいときに番号がずれますしね。\d\dよりは[\d]{2}とかにすると思います。 (コーディングとかでも、演算子の優先順位で明らかであっても、()をつけたい性格です) 脊髄反射で書いたので、?とかも不要だったし回答としては微妙です。
x_x

2018/06/28 06:45

jun68yktさんも同様の回答で気になっていました。ありがとうございました
jun68ykt

2018/06/28 10:01

あ、そうですね。私の回答でも、 [ ] は不要でしたので、修正させて頂きました。
guest

0

ベストアンサー

str.replace(/number=[^&]*/g, 'number=01');

投稿2018/06/28 01:05

編集2018/06/28 01:06
tkturbo

総合スコア5572

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

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

rainbowsix002

2018/06/28 01:15

[^&]*/gの説明もお願いしてもよろしいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問