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

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

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

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

正規表現

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

Q&A

解決済

3回答

362閲覧

正規表現の書き方について

Shinya_0628

総合スコア5

JavaScript

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

正規表現

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

0グッド

1クリップ

投稿2020/07/20 16:56

編集2020/07/21 01:10

お世話になっております。

語尾()の中に文字や数字や記号などが入っている文字列を()も含め全てreplaceメソッドを使って削除しようと考えてます。

例) test (テスト123)
この文字列の(テスト123)の部分を指定する正規表現を知りたいです。

よろしくお願いします。

追記
プログラミング初心者なのと、teratailを使うのは初めてでして、色々お手数おかけしましてすみません。
あとたくさんの回答ありがとうございます。
試したコードは
イメージ説明
まずこのコードは、結果にもある通り全ての文字記号が対象になってしまいました。
あと、漢字が指定されません。

イメージ説明
カッコとカッコの中の文字だけ削除したいので^$を使って次のコードも書いてみましたが、何故か漢字だけが削除されました。

イメージ説明
あとカッコを()で指定する前に[]をつけないとSyntaxエラーが返ってきます。

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

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

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

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

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

miyabi_takatsuk

2020/07/20 17:57

まず自分でやってみたコードを記載してください。
Shinya_0628

2020/07/20 18:11

...replace( /\(w+[0-9]\)/gi , ' ' )など試しましたが、無理でした。 そもそも()の指定は\(\)で合ってますか?
miyabi_takatsuk

2020/07/20 22:40 編集

> など試しましたが、無理でした その試したコードを全部記載してください。 そして、結果、どうなったかを具体的に記載してください。 (例えば、TypeErrorが出た、とか) また、ここは、コメント欄なので、 質問本文を修正してコードを記載してください。 その際はコードブロックを使ってください。
guest

回答3

0

コメントにて書いてらっしゃる
.replace( /(w+[0-9])/gi , ' ' )
を元に回答します。

1. 「w+」では単語を指定できません

w+という正規表現が意味するのは「1以上連続する"w"」です。wordという意味でwを使いたかったのであれば\w+が正しいです。

2. 「\w+」では日本語を指定できません

\w+としてもうまく動かないと思います。\w

アンダースコアを含むどの英数字にもマッチします。[A-Za-z0-9_] に相当します。

(MDN web docsの正規表現の説明より引用)

なので日本語にはマッチしません。
.+なり[ア-ン]+なり質問者様の状況に合わせて他の方法で指定するのがいいかと思います。

3. 「[0-9])」では3桁の数字にマッチしません

ただの書き忘れかもしれませんが+が必要です
[0-9]+)

正規表現に限った話ではないですが、書いたものがうまく動かない場合ひとつひとつ順番に確認していくのがいいかと思います。

"test(テスト123)".replace( //gi , ' ' )
"test(テスト123)".replace( /(w+/gi , ' ' )
"test(テスト123)".replace( /(w+[0-9]/gi , ' ' )
"test(テスト123)".replace( /(w+[0-9])/gi , ' ' )

と順に試していけば少なくとも
(という「(」の指定には問題がなく
w+という単語の指定に問題があるところまでは特定出来るはずです。

投稿2020/07/20 23:22

PgMidori

総合スコア184

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

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

Shinya_0628

2020/07/21 01:26

回答ありがとうございました。 書き方の勉強になりました。
guest

0

ベストアンサー

普通にカッコの中身を削除ならこう

javascript

1var str="test(テスト123)test"; 2str=str.replace(/(.+?)/g,''); 3console.log(str);

投稿2020/07/21 00:30

yambejp

総合スコア114784

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

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

yambejp

2020/07/21 00:30

カッコが入れ子になっていたらどうするとか、検討すべき点はいくつかあります
Shinya_0628

2020/07/21 01:24

回答ありがとうございました。 おかげさまで解決できました。
guest

0

語尾()の中に文字や数字や記号などが入っている文字列を()も含め全てreplaceメソッドを使って削除

削除するなら、replace()newSubstr" "ではなく、"" にします
(結果をtrim()するのであればそのままでも構いません)。


正規表現は、パターンに使える文字を確認しながら身につけるしかありません。

例えば、(テスト123)を決め打ちで削除する例

javascript

1console.log( "test (テスト123)".replace(/(\u30C6\u30B9\u30C8123)/,"") ); 2// => "test "

上記の テスト123 に代替するパターンを考える。

  • ()の中.+ にする(この例は(が含まれるとマッチに失敗します)
  • 語尾は、終端マッチ $を使う
  • サンプルが1行だったので、g フラグは無し(事前に文字列配列にするなどの工夫が必要)

javascript

1console.log( "test (テスト123)".replace(/(.+)$/,"") ); 2// => "test "
  • ( の前の WhiteSpace も削除

javascript

1console.log( "test (テスト123)".replace(/\s*(.+)$/,"") ); 2// => "test"

正規表現を知りたいです

完全なパターンは、評価対象の文字列フォーマットを知る人にしか書けません
冒頭の通りで パターンを書けるようになる 必要がありますので、Google検索MDN 正規表現 で結果表示されるページを読んでください。

投稿2020/07/21 00:25

AkitoshiManabe

総合スコア5432

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

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

Shinya_0628

2020/07/21 01:26 編集

回答ありがとうございました。 色々と勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問