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

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

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

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

正規表現

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

Q&A

解決済

3回答

1728閲覧

正規表現で特定の文字列を含まない、3文字の文をマッチさせたい。

penguin123401

総合スコア1

JavaScript

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

正規表現

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

0グッド

1クリップ

投稿2022/06/24 02:25

Javascriptの正規表現で、特定の文字列を含まない、3文字の文を指定したいのですが、どのようにすればいいのかわかりません。

特定の文字列を含まない正規表現

Javascriptコード

1^(?!.*abc).*$

3文字の文章にマッチする正規表現

Javascriptコード

1.{3}

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

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

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

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

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

Zuishin

2022/06/24 02:32 編集

.* を .{3} に変更すれば良いように見えますが、それではダメだったということでしょうか? どのようにダメだったのかを説明してください。 たとえば、abc ではなく abcde の場合は意図に沿うか微妙ですが、そういうことですか?
guest

回答3

0

js

1if (str.length == 3 && str.indexOf("abc") == -1) { 2 ...

正規表現は実行速度が遅くコードの可読性が低いので、正規表現を使わなくても済むなら使わないほうがよいです。

どうしても正規表現がいいなら、^(?!.*abc)...$ でいいんじゃないでしょうか。

投稿2022/06/24 02:31

int32_t

総合スコア20856

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

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

0

ベストアンサー

pattern属性

Javascriptの正規表現で、特定の文字列を含まない、3文字の文を指定したいのですが、どのようにすればいいのかわかりません。

他の回答の通り、JavaScriptからご質問の要件で文字列判定を行う場合、正規表現を使わないのが基本的には妥当だと思います。
が、<input pattern> を使用している場合は正規表現の採用を検討する余地があります。

HTML

1<form> 2 <input type="text" maxlength="3" pattern="(?!abc).{3}" required> 3 <input type="submit" value="送信"> 4</form>

submit時のバリデーションでよければ、JavaScriptコードをなくすことが可能です。
入力時のバリデーションを追加する場合は、inputイベントで判定を追加します。

JavaScript

1document.querySelector('input[type=text]').addEventListener('input', event => event.target.reportValidity(), false);

任意の一文字

蛇足ですが、JavaScriptコード上で「任意の一文字」を指定する場合は、改行にマッチさせる方法として、/./s もしくは、/[\s\S]/ と記述する方法があります。

Re: penguin123401 さん

投稿2022/06/25 10:01

think49

総合スコア18162

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

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

0

abcではない3文字の文字列ならこう

javascript

1const reg=/^(?!.*abc).{3}$/ 2console.log(reg.test("xyz"));//true 3console.log(reg.test("xya"));//true 4console.log(reg.test("abc"));//false abcなので 5console.log(reg.test("xy"));//false 2文字なので 6console.log(reg.test("wxyz"));//false 4文字なので

aもbもcも含まないならこう

javascript

1const reg=/^(?!.*[abc]).{3}$/ 2console.log(reg.test("xyz"));//true 3console.log(reg.test("xya"));//false aを含むので 4console.log(reg.test("abc"));//false abcなので 5console.log(reg.test("xy"));//false 2文字なので 6console.log(reg.test("wxyz"));//false 4文字なので

投稿2022/06/24 03:40

yambejp

総合スコア114814

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問