- ベストアンサー
少し複雑な正規表現
フォームで値をチェックしたいのですが、なかなかうまくいきません。 チェックしたい値は半角英数字と,と'と.と-と半角スペースです。 また入力された値は1単語ではなく半角英数字で区切られた2単語異常でないといけないというものです。 どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>以上のルールではどうなるのでしょうか?よろしくお願いします。 では、No1の回答になると思いますが・・・(^^; No1にサンプル付きで回答していますので、 まず、それを試して下さいね。 その上で、問題点があるなら、補足して下さい。
その他の回答 (2)
- venzou
- ベストアンサー率71% (311/435)
>具体的には以下のようになります。 やはり、「半角スペースで区切る」が正解ですね。 >hoge -hoge false No1の回答の例では、上記のみが不一致ですね。 これが falseの理由は何でしょう? 英数字以外の記号(,'.-)を含むことが出来る、とありますが、 どこに含める事が出来るのか?この辺りが不明瞭ですね。 記号は単語の先頭には使えない、と言うルールかな? であれば、下記のような感じでどうでしょう? /^ *\w+[\w,'\.\-]* +\w+[\w,'\.\- ]*$/ もし不都合があるなら、その例と、理由を教えて下さい。
補足
回答ありがとうございます。 すいません、それはtrueになります。 以上のルールではどうなるのでしょうか?よろしくお願いします。
- venzou
- ベストアンサー率71% (311/435)
>また入力された値は1単語ではなく半角英数字で区切られた2単語以上でないといけないというものです。 単語が半角英数字で区切られている・・・ 単語自体が半角英数字の場合、単語と区切り文字の区別は? 具体的なイメージが湧きません。(^^; 出来れば、幾つか例を挙げて下さい。 ==================================================== もし、「半角スペースで区切られている」の間違いなら、 下記のような感じでどうでしょう? /^ *[\w,'\.\-]+ +[\w,'\.\-]+[\w,'\.\- ]*$/ 内容を説明すると 先頭 /^/ 半角スペースが0個以上(先頭のスペースを考慮) / */ 英数字と,'.-が1個以上(1単語目) /[\w,'\.\-]+/ 半角スペースが1個以上(単語の区切り) / +/ 英数字と,'.-が1個以上(2単語目) /[\w,'\.\-]+/ 英数字と,'.-半角スペースが0個以上(3単語以降) /[\w,'\.\- ]*/ 末尾 /$/ サンプル ---------------------------------------------------- <html> <head> <script language="JavaScript"> <!-- function test(){ if(form1.input1.value.match(/^ *[\w,'\.\-]+ +[\w,'\.\-]+[\w,'\.\- ]*$/)){ form1.output1.value = "OK"; }else{ form1.output1.value = "NG"; } } //--> </script> </head> <body> <form name="form1"> データ<input name="input1" type="textbox"><br> <input type=button value="比較" onClick="test()"><br> チェック<input name="output1" type="textbox"> </form> </body> </html> ----------------------------------------------------
補足
回答ありがとうございます。 すいません、具体的には以下のようになります。 hoge false hoge hoge true hoge hoge hoge true hoge -hoge false hoge, hoge true @hoge h false 必ず半角スペースで区切られた半角英数字の単語が2つ以上で,と'と.と-を含むことが出来る値です。 よろしくお願いします。
お礼
お礼遅くなってすいません。 ばっちりです!本当にありがとうございました。