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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

正規表現

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

Q&A

解決済

2回答

2136閲覧

正規表現 | 〜〜のみ含むパターンと、〜〜は含んではいけないパターン

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

正規表現

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

0グッド

0クリップ

投稿2020/02/06 18:43

正規表現で入力フォームの制御をかけたく色々試しているのですがうまくいきません。

要件は以下です。

・漢字とカタカナはOK。
・文字列の前と最後に空白はNG。
・文字列の間に半角スペースも全角スペースもいれかれるが、1つまでとする。

正規表現のルールを参考にしながら最終的に近いところまでできてはいるのですが、組み合わせ方があまり分からず3時間ほど苦戦しています。
/^(?=[ァ-ン一-龥])(?!.*\s{2,}).*$/

文字列期待値
漢字OK
カタカナOK
漢字カタカナOK
あ漢字カタカナNG
漢字あカタカナNG
漢字カタカナあNG
半角スペース期待値
漢字カタカナNG
漢字カタカナNG
漢字 カタカナOK
漢字 カタカナNG
漢字カタカナ NG
漢字カタカナ NG
全角スペース期待値
 漢字カタカナNG
  漢字カタカナNG
漢字 カタカナOK
漢字  カタカナNG
漢字カタカナ NG
漢字カタカナ  NG

どういう組み合わせで上記実現できますでしょうか?

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

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

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

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

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

Zuishin

2020/02/06 23:39

一度にできないことはないと思うけど複雑になるので、それぞれの条件で複数回に分けてチェックするのがいいと思います。 自分で理解できない、あるいは理解が難しいものを聞いても、緊急に修正が必要になった時に困るでしょう。
ikadzuchi

2020/02/07 00:29

次の文字列に対する想定値を教えて下さい。(あるいはそのような文字列は来ないか) 「漢字 カタ カナ」 「ヴー」
guest

回答2

0

ベストアンサー

「漢字またはカタカナ」と「半角/全角スペースと漢字またはカタカナのセットが0回か1回出現」という判定で良いと思います。

js

1/^[ァ-ン一-龥]+([\s ][ァ-ン一-龥]+)?$/

またVue.jsを使っているのであれば入力値の前後にあるスペースは.trimを使えばVue側で外してくれるのでユーザーに入力を強いるよりは自動で外してあげたほうが良いでしょう。

html

1<input v-model.trim="message">

実装テスト - JSFiddle

投稿2020/02/07 04:25

編集2020/02/07 04:25
nt4c

総合スコア768

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

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

退会済みユーザー

退会済みユーザー

2020/02/07 11:56

ありがとうございます! .trimはもちろんつかっていますが、実装者によっては.trim漏れがあるかもなので、念の為正規表現でも捉えたくです!
退会済みユーザー

退会済みユーザー

2020/02/09 15:46

すいません、少し挙動がおかしく、 以下は半角スペース2つ連続なのでエラーでOKなのですが ``` 漢字 カタカナ ``` 以下は半角スペース2つ連続ではないのでエラーでがないことが期待値になります。 ``` 漢字 カ タカナ ```
nt4c

2020/02/10 01:47

回答のコードをそのまま使うのではなくどういった処理がされているか確認して理解してみてください。そうでないと今後あなた自身で調整ができなくなってしまいます。 「半角/全角スペースと漢字またはカタカナのセットが0回か1回出現」なので動作としては回答した通りの動作です。0回以上の量指定子は「?」ではなく「*」です。
退会済みユーザー

退会済みユーザー

2020/02/10 05:49

「半角/全角スペースと漢字またはカタカナのセットが0回か1回出現」という表現がややこしく理解できないので 答えから理解を導き出そうとする人間もいます。 そういう人間にアニュアルを組み合わせて答えを出してみてくださいと言われても時間がもったいないです。 答えを修正することで動作を確認しようとする人間もいます。 成長を必要としているエンジニア社員なら分かりますが、 プロジェクトを完成させることが目的の人間にとっては中身がどうのこうのとかは手段でしかないです。 いづれにせよありがとうございました!
m.ts10806

2020/02/10 13:35

>表現がややこしく理解できない のなら大抵の人は「自分でも何とか理解できる」ように表現を改めます。 角度や考え方、見方を変えることで見えることもあります。 >プロジェクトを完成させることが目的の人間にとっては中身がどうのこうのとかは手段でしかないです。 いい言葉を言いますね。 でも、何の責任もない質問サイトにルール無視で丸投げて小さくない批判を受けるより お金しっかりかけて責任ある仕事をしてもらうほうが合理的じゃないですか? お金かけたくないだけの言い訳は見苦しいだけ。 責任を放り出してる人が語っていいことではない。ぜひ大失敗してくださいね。
guest

0

1.漢字またはカタカナのみ
2.漢字またはカタカナのみ+空白1つ+漢字またはカタカナのみ

で分けて考えればどうでしょうか

1.[ァ-ン一-龥]+
2.[ァ-ン一-龥]+[\s ][ァ-ン一-龥]+

合わせて

/^([ァ-ン一-龥]+|([ァ-ン一-龥]+[\s ][ァ-ン一-龥]+))$/

投稿2020/02/06 19:14

編集2020/02/06 19:16
Technote

総合スコア63

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問