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

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

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

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

正規表現

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

Q&A

解決済

2回答

3314閲覧

JavaScriptにおける正規表現のエラーについて

study_111

総合スコア82

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2020/09/22 11:45

編集2020/09/22 12:02

URLであるかどうかをチェックする為の正規表現として以下のプログラムをJavaScriptコードとして記載しましたら、エラーになってしまいました。

let re = https?://[\w/:%#$&?()~.=+\-]+

こちらの正規表現は正規表現サンプル集にて、掲載されていたコードになります。
こちらのエラー解決のため、アドバイスの程頂けましたら幸いです。

追記

以下のコードはエラーとはなりませんでした。

checkFormat(url){ let re = /^http(|s)://.+/ return re.test(url); },

しかし、以下の場合はエラーとなってしまいました。

check_url(url){ let re = /https?://[\w/:%#$&?()~.=+\-]+/ },

エラーの内容としましては、Expression expected.Invalid character.とのエラーが発生している状況です。

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

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

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

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

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

coco_bauer

2020/09/22 11:59

https?://[\w/:%#\$&\?\(\)~\.=\+\-]+ は、クオート(引用符)で囲まれていないのでダメなのではないですか? ちなみに、どんなエラーが表示されましたか? 「エラーになってしまいました」だけでは訳が判りません。
study_111

2020/09/22 12:05

> https?://[\w/:%#\$&\?\(\)~\.=\+\-]+ は、クオート(引用符)で囲まれていないのでダメなのではないですか? こちらですが、JSでは「/」で囲む必要があったと知り、「/」を行頭と行末に付けてみたのですが、追記させて頂きました1番目のコードはエラーが発生していないのですが、2番目のコードでは、エラーが発生してしまっている状況です。
guest

回答2

0

めんどうなら普通にRegExpオブジェクトをつかえばいいでしょう

javascript

1let re = new RegExp("https?://[\w/:%#$&?()~.=+-]+");

投稿2020/09/22 12:50

編集2020/09/22 12:52
yambejp

総合スコア116734

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

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

yambejp

2020/09/22 13:08

jsのurlチェックなんてある意味不要です input type=urlですら 「https?:.」程度のチェックです 存在チェックなどが必要ならサーバーサイドでdns問い合わせをしたり curlで接続チェックするなどしないと意味ありません
study_111

2020/09/23 01:15

ご回答ありがとうございます。 RegExpオブジェクトを使用するといった方法もあるのですね。今回は正規表現リテラルの指定でうまくいったのですが、次回正規表現を使用する際は、検討してみたいと思います。
study_111

2020/09/23 02:13

jsのチェックの件なのですが、今回はUXの仕様上実装したいと考えておりました...
guest

0

ベストアンサー

こちらですが、JSでは「/」で囲む必要があったと知り、「/」を行頭と行末に付けてみたのですが

途中に/が入っているので、そこで正規表現として途切れてしまっています。

正規表現の途中では/として、末端でないことを明示する必要があります。

javascript

1let re = /https?://[\w/:%#$&?()~.=+\-]+/

投稿2020/09/22 12:12

maisumakun

総合スコア146018

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

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

study_111

2020/09/22 12:16 編集

ご回答ありがとうございます。 > 「 let re = /https?://[\w/:%#$&?()~.=+\-]+/」 こちらで実行してみたのですが、「Unnecessary escape character: ? 」や「Unnecessary escape character: $ 」などの同様のエラーがいくつか発生してしまいました。
maisumakun

2020/09/22 12:39

Unnecessary escape characterはエラーではありません。文字通り、「エスケープが不要」という意味です。
study_111

2020/09/23 00:31 編集

一度、該当部分のエスケープを削除してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問