JavaScriptの(正確にはJavaScriptのみというわけでは無く、どの言語にもいえることなのですが、)正規表現を使って、以下のような書き方を不許可にしたいのですが、なかなかうまくいきません。
絶対条件は、英数字のみです。
禁止にしたい:-hoge、hoge-、_hoge、hoge_
しかし、これはOK:ho-ge、ho_geなどなど........
ようするに、先頭末尾に-(ハイフン)_(アンダーバー)の使用を禁止にしたいのです。
但し以下の場合に使わなければなりません。
function check( str )
{
if( str.match(/ここに制御文/) )
return false;
else
return true;
}
↑ みたいな関数があって、下記のような処理をほどこしています。
if( !check( str ) ){
alert( strMsg );
return false;
}
わかりづらい内容かもしてませんが、
どなたご教授いただけば幸いです。
宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
一般的な記述としては、
^[^\-_].*[^\-_]$
になると思います。
先頭に一致(^)した文字が「-」(\-)ないし「_」(_)以外([^\-_])で、かつ、末尾に一致($)した文字も同じパターン([^\-_]$)であって、任意の文字列(.*)
以下に、テストに用いたjscriptを書いておきます。
(JavaScriptでテストしていませんのでご確認願います)
windowsでwshが使用できる環境であれば、下記内容をtest.jsとして保存し、コマンドプロンプトから
wscript test.js
ないし
cscript test.js
として実行可能です。
// ここから test program
var re = "^[^\-_].*[^\-_]$";
var s, r;
s = "-abc";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
s = "_abc";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
s = "a-bc";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
s = "ab_c";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
s = "abc-";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
s = "abc_";
r = s.match(re);
WScript.Echo(s + " match(" + re + ") = " + r);
// ここまで
cscript test.jsでの実行結果
===
-abc match(^[^-_].*[^-_]$) = null
_abc match(^[^-_].*[^-_]$) = null
a-bc match(^[^-_].*[^-_]$) = a-bc
ab_c match(^[^-_].*[^-_]$) = ab_c
abc- match(^[^-_].*[^-_]$) = null
abc_ match(^[^-_].*[^-_]$) = null
詳しいソースまで記載していただき、非常にうれしく思います。
JavaScriptで実装しましたが、うまくいきました。
以下のようにすれば、理想通りに動いてくれました。
^[^\-_][a-zA-Z0-9-_\.]+[^\-_]$
非常に有用なアドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- JavaScript javascriptで文字挿入でtoggleみたいなのはありますか? 2 2023/02/14 21:53
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Boolean型配列中のTrueの有無を...
-
Vb.netのグローバル変数の宣言...
-
【正規表現】【javascript】CR...
-
C# .NET DataGridView の行を追...
-
Linux バイナリ実行できない "...
-
「オブジェクトが必要です。」...
-
ASP+アクセスでのSQLコメントに...
-
関数を呼び出すHTMLタグ<body o...
-
C#の配列について
-
hoge の謎
-
onclick指定関数の引数へローカ...
-
static constメンバ変数(配列)...
-
【Jquery】changeイベント毎にa...
-
ボタンをクリックすると数が増...
-
C#OpenCv V4にのエラーに関する...
-
同じIDで定義した要素の配列を...
-
JavaScript window.openで開く...
-
google apps scriptの終了のさせ方
-
Click回数を数え、規定された回...
-
FireFoxのjavascriptで自動でキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【正規表現】【javascript】CR...
-
Linux バイナリ実行できない "...
-
ASP+アクセスでのSQLコメントに...
-
Boolean型配列中のTrueの有無を...
-
Excel VBA の ChangeFileAccess
-
【Jquery】changeイベント毎にa...
-
Vb.netのグローバル変数の宣言...
-
static constメンバ変数(配列)...
-
同じ型【ハイフンと数字】だけ...
-
class指定したHTML要素の背景色...
-
onclick指定関数の引数へローカ...
-
ボタンをクリックすると数が増...
-
HTTPSのとき":"が"%3A"ではなく...
-
「オブジェクトが必要です。」...
-
MFCのキャプション変更
-
ページ離脱時のalertボタンで処...
-
アンカーリンクをクリックさせ...
-
VC++のちらつき防止方法
-
C# .NET DataGridView の行を追...
-
2次元のJSON形式の配列の展開
おすすめ情報