げんきちの秘密基地

エンジニアリングが世の中の思いを実現してきた歴史に気づき、29歳未経験からWEBエンジニアとして転生!【Danger】綺麗事を割と本気で言ってきます【GitHub】https://github.com/0840kg【Twitter】https://twitter.com/0840kg

詰まった!jQueryの正規表現で文字数制限をかける方法

ぞす!げんきちです!\\\\٩( 'ω' )و ////

 

「いや、誰だよ」って方は、下記リンクを見てやってください。

  1. はじめまして!げんきちです! - げんきちの秘密基地

  2. 僕がエンジニアになりたい理由 - げんきちの秘密基地

目次〜

f:id:www08056561815:20190223213744j:plain

 ページ遷移する新規登録機能をJavascriptで実装しています。

現状だと最終ページのsubmitを押さないとバリデーションが効きません。

(何も入力していなくても、最終ページまではいけてしまう。)

 

JavaScriptでバリデーションをかけるために正規表現が必要になりました。

そこで詰まった内容です。

 

「入力フォームを20文字以下に制限する」

これを実現しようとします。

$('.member-info').find('#user_nickname').each(function(){
      let error;
      let value = ($(this).val());
      if(!value.match(/正規表現/)){
        error = true;
      }

正規表現にかかった場合に、変数errorの値をtrueにしようとしました。

 

詰まるまでの流れ

正規表現をググりました。

. 任意の1文字
// 10文字以下の半角数字の表現
[0-9]{,10}

 

ふっふっふ、分かったぞ。

if(!value.match(/.{,20}/))

これで20文字以上入力したらtrueになるはず。

 

console.log(error)

a を入力→true

aaaaaaaaaaaaaaaaaaaaa を入力→true

 

???

もう一度ググりました。

// 4文字以上、10文字以下の半角数字の表現
[0-9]{4,9}

 

試しにやってみました。

if(!value.match(/.{4,20}/))

これで4文字以下、20文字以上でtrueのはず。

 

console.log(error)

aを入力→true

aaaaaを入力→undefined

aaaaaaaaaaaaaaaaaaaaaを入力→undefined

 

4文字以上まではmatchで取れてる...?

なんてこったい/(^o^)\

ここで詰まりました。

 

最終的にはこれでいけました。

    $('.member-info').find('#user_nickname').each(function(){
      let error;
      let value = ($(this).val());
      if(!value.match(/^.{0,20}$/)){
        error = true;
      }

 

^ 行の先頭
$ 行の末尾

 先頭と末尾を指定してあげました。

 

原因は特定できてないです。

すごく気になる...

我慢して開発速度を優先します。

また今度時間がある時に考えます。

 

<一日一新>

マックナゲットのうま辛チーズソース。うま甘。

 

 

<学習進捗>

学習開始からの期間 :74日
今日までの合計時間:738h
今日までに到達すべき目標時間:675h
目標との解離:63h
10,000時間」まで、

 

残り・・・9,262時間!」

 

 

以上です。

読んでくれた方々、ありがとうございました!((_ _ (´ω` )ペコ。

genkichi.hateblo.jp

genkichi.hateblo.jp

 

f:id:www08056561815:20190224095507g:plain

twitter.com