
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
confirmの連続?
-
サブウインドウから親ウインド...
-
ボタンをクリックすると数が増...
-
【Jquery】changeイベント毎にa...
-
ifreamをリロードしたい
-
MFCのキャプション変更
-
【正規表現】【javascript】CR...
-
アンカーリンクをクリックさせ...
-
クラス内からインスタンス先の...
-
hoge の謎
-
コードを教えて下さい
-
同じ型【ハイフンと数字】だけ...
-
VC++のちらつき防止方法
-
2次元のJSON形式の配列の展開
-
console.logを使用して変数名と...
-
Boolean型配列中のTrueの有無を...
-
C# .NET DataGridView の行を追...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
JavaScriptで「〇以上▲まで」の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTTPSのとき":"が"%3A"ではなく...
-
ボタンをクリックすると数が増...
-
Boolean型配列中のTrueの有無を...
-
サブウインドウから親ウインド...
-
Linux バイナリ実行できない "...
-
ASP+アクセスでのSQLコメントに...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
正規表現で半角数字1桁のみを全...
-
Objective-C 変数への代入エラー
-
console.logを使用して変数名と...
-
サンプルによく出てくるhogehog...
-
onclick="" の""を変えることが...
-
ifreamをリロードしたい
-
【Jquery】changeイベント毎にa...
-
クラス内からインスタンス先の...
-
MFCのキャプション変更
-
ひとつ上の階層にアクセスさせ...
-
【正規表現】【javascript】CR...
-
同じ型【ハイフンと数字】だけ...
おすすめ情報