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

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

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

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

正規表現

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

Q&A

解決済

1回答

13083閲覧

正規表現 英数字記号 全角半角込み 

coko1

総合スコア276

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2017/05/08 05:19

編集2017/05/08 05:26

javascriptで半角全角互いの英数字記号をチェックしたいのですが、どのようにすればよいでしょうか?

javascript

1/[a-zA-z0-9!"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]/g

上記で半角については網羅できていると思うのですが、全角はどのようにするのかがわかりません。お力を貸していただけると助かります。
※記号については上記で判別している記号のみ全角許容する形です

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

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

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

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

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

Lhankor_Mhy

2017/05/08 05:48

『記号については上記で判別している記号のみ全角許容する形』これは具体的にはどのような動作ですか? たとえば"["は『許容する』とのことですが、"a["という文字列はマッチした方がいいのでしょうか、しない方がいいのでしょうか。
coko1

2017/05/08 06:02 編集

目的としては英数字記号(半角全角含む)のみで構成された文字列でない場合を判断することなので、”あ”や”☆”などが含まれていた場合にマッチするようにしたいです。この説明でよろしいですか?
Lhankor_Mhy

2017/05/08 06:45

ご提示の正規表現では半角文字にマッチしてしまうため、その要件を満たさないと思うのですが、これは質問とは関係なくただ書いてあるだけなんでしょうか?
coko1

2017/05/08 07:03

紛らわしくて申し訳ないです。ただ書いてあるイメージです。半角はa-zA-Z0-9!"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}は許容したいという目的で記述したものになります。
guest

回答1

0

ベストアンサー

文字集合の否定を使うといいと思います。

[^xyz]

文字集合の否定または補集合です。角括弧で囲まれた文字ではない文字にマッチします。ハイフンを用いて文字の範囲を指定することも可能です。文字集合パターンで動作するものすべてがこちらでも機能します。
例えば [^abc] は [^a-c] と同じです。これは "brisket" の 'r' や "chop" の 'h' といった一番最初の該当文字にマッチします。
正規表現 - JavaScript | MDN

投稿2017/05/08 08:07

編集2017/05/08 08:50
Lhankor_Mhy

総合スコア36074

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

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

coko1

2017/05/08 09:40 編集

回答ありがとうございます。ですが全角の場合どのようにするのかが依然わかりません。 [^a-zA-z0-9!"#$%&'()\*\+:;<=>?@\[\\\]^_`{|}~a-zA-Z0-9!”#$%&’()*+-.,/:;<=>?@[¥]^_‘{|}~] のようにしてみましたが、これだとやはりエラーになってしまいました。
Lhankor_Mhy

2017/05/08 09:25

ハイフンによる文字範囲は逆順ができないんじゃないでしょうか。
coko1

2017/05/08 09:42

どういったことでしょうか?
Lhankor_Mhy

2017/05/08 09:52

www コメント訂正したんですねw それなら無事エラー出ませんよね。解決でよろしいですか?
coko1

2017/05/08 10:00 編集

先程のはそこの指摘だったんですね。何か知らず知らずのうちに入ってしまっていたので消したんです。 エラーは解消されたのですが文字列が'☆aaaaa'ならマッチするのですが、'aaaaa☆'だったバイなどにマッチしません。どのように改善したらよいでしょうか?
Lhankor_Mhy

2017/05/08 10:01

gオプションをつけていますか?
Lhankor_Mhy

2017/05/08 10:04

あ、いや、gオプションは関係ないですね。その正規表現を使っているコードをご提示いただいた方が早そうです。
coko1

2017/05/08 10:08

失礼しました。説明が大部足りていませんでした。上記の正規表現では☆などが入力できてしまったので^[]のように変えたら際に先頭のみマッチするようになったのですが、これを文字列全体を対象にしたいということです。
coko1

2017/05/08 10:08

str..match(/[a-zA-z0-9!"#$%&'()\*\+:;<=>?@\[\\\]^_`{|}~a-zA-Z0-9!”#$%&’()*+-.,/:;<=>?@[¥]「」^_‘{|}~]/g)
Lhankor_Mhy

2017/05/08 10:30

否定の^が抜けてますね。
coko1

2017/05/08 10:55

str.match(/[^a-zA-z0-9!"#$%&'()\*\+:;<=>?@\[\\\]^_`{|}~a-zA-Z0-9!”#$%&’()*+-.,/:;<=>?@[¥]「」^_‘{|}~]/g) としても上手くいきませんでした。
coko1

2017/05/08 11:03 編集

if(str.match(/[^ 上記の正規表現 /g){    //strに英数字記号以外の文字が含まれている }else{    //英数字記号のみ } としたいのですが…
Lhankor_Mhy

2017/05/08 11:02

上手くいかないとは、具体的には何が起きますか? 'aaaaa☆'.match(/[^a-zA-z0-9!"#$%&'()\*\+:;<=>?@\[\\\]^_`{|}~a-zA-Z0-9!”#$%&’()*+-.,/:;<=>?@[¥]「」^_‘{|}~]/g); 当方の環境で上記を実行したところ、["☆"]が返りましたが、そちらでは違う応答なのでしょうか?
Lhankor_Mhy

2017/05/08 11:04

かっこ閉じ忘れてます。
coko1

2017/05/08 11:57

できました!長々とご丁寧にありがとうございした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問