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

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

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

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

正規表現

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

Q&A

解決済

1回答

1640閲覧

javascript正規表現での記号の指定

ruuusaamarki

総合スコア470

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2021/05/03 10:12

前提

javascript正規表現で記号をマッチさせたいと考え調べていたところ
以下のサンプルコードに出会いました。

sample.js

1 2[!-/:-@[-`{-~] 3

自分の理解では

!-/ :-@ [-` {-~

と『4つの範囲指定を角括弧の中でしている』と予想しているのですが
これは認識として合っていますでしょうか。

検証方法としては以下のサイトを利用させていただきました。
https://www.softel.co.jp/labs/tools/regex/

マッチ対象文字列は以下として設定しました。

!"#$%&'()*,-./:;<>?@[]^_`{|}~

以下の正規表現指定を上から順番に試してみました。

[!-/] マッチ結果→ !"#$%&'()*,-./ [:-@]  マッチ結果→ :;<>?@ [[-`]  マッチ結果→ []^_` [{-~]  マッチ結果→ {|}~

質問1

前述の理解が間違っている部分がありましたらご指摘いただければ嬉しいです。

質問2

範囲指定が4回行われていますが
この記号の順番がどのように決まっているのか
調べることができませんでした。

試しに[!-~]と指定してみたところ半角大文字、小文字、数字も
含めてマッチされましたので4つに分ける必要があることは理解できました。
しかしなぜ:-@なのかがわかりません。0−9やa-zは当然だと思いますが
同じように記号にも順番があるのでしょうか。
記号の順番などその分かれている基準が知りたいです。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問1:
合っています。

質問2:
各文字には文字コードという数値が対応しています。
ある文字からある文字の範囲というのは、開始文字の文字コード以上で、終端文字の文字コード以下であるような文字コードを持つ文字がマッチします。

文字コードは、いわゆる「半角英数記号」であれば、ASCII - Wikipedia を参照。

投稿2021/05/03 10:26

otn

総合スコア85901

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

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

otn

2021/05/03 10:32

プログラムで表示する場合は、 for(let i=0; i<128; i++){ console.log(i, String.fromCharCode(i)); } ですが、制御文字 0 ~ 31 と 127 がどう表示されるかは環境によると思います。 制御文字を除くなら for(let i=32; i<127; i++){ です。
ruuusaamarki

2021/05/03 10:32

アスキーというのを忘れていました^^;リンク先の表ではっきりわかりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問