比較的によく使われる正規表現を蓄積します。
正規表現(Reglar Expression)は、コンピュータ科学の概念の一つです。正規表現は単一の文字列を使用して、ある構文規則に合致する一連の文字列を記述します。多くのテキストエディタでは、正規表現は通常、あるパターンに該当するテキストを検索、置換するために使われます。多くのプログラム設計言語は正規表現を使った文字列操作をサポートしています。多くのテキストエディタでは、正規表現は通常、あるパターンに該当するテキストを検索、置換するために使われます。
中国語の文字にマッチする正規表現:[u 4 e 00-u 9 fa 5]
中国語に合わせるのは本当に頭が痛いです。この表現があれば簡単です。
二バイトの文字にマッチします。(漢字も含めて):[^x 00-xff]
注:文字列の長さを計算するために使用できます。(2バイトの文字長計2、ASCII文字計1)
空白行にマッチする正規表現:ns*r
コメント:空白の行を削除するために使用できます。
HTMLタグにマッチした正規表現:<((*?)[>>*?*?
コメント:ネット上に流布されているバージョンは最悪です。これも一部しかマッチしていません。複雑な入れ子マークについてはまだ何もできません。
最初の空白文字にマッチする正規表現:^s*$
コメント:行頭の行末の空白文字(スペース、タブ、タブの交換などを含む)を削除するために使用できます。非常に有用な表現です。
Emailアドレスにマッチする正規表現:w+(-+.)*@@@@@@(-.')w+*.w+((-.')w+**.*)
コメント:フォーム検証はとても実用的です。
URLにマッチする正規表現:[a-zA-z]+:/[^s]*
コメント:ネットで流布されているバージョンの機能はとても限られています。
アカウントにマッチするかどうかは合法的です。(アルファベットの先頭は5-16バイトが許可されています。アルファベットの数字をアンダースコアにしてもいいです。):^[a-zA-Z 0-9_]4,15}
コメント:フォーム検証はとても実用的です。
国内電話番号とのマッチング:d{3}d{8}d{4}d{7}
コメント:マッチング形式は051-440522または021-878822のようです。
テンセントQQ号に一致します。[1-9][0-9]{4,}
コメント:テンセントQQ号は10000から始まります。
中国郵便番号に合わせて:[1-9]d{5}(?d)
コメント:中国郵便番号は6桁の数字です。
マッチング身分証:d{15}|d{18}
中国の身分証は15位か18位です。
ipアドレスにマッチします。d+.d+
コメント:ipアドレスを抽出する時に役に立ちます。
特定の数字にマッチする:
^[1-9]d*//整合正の整数
^-[1-9]d*/整合負の整数
^-1-9]d*$/整合整数
^[1-9]d*|0//マッチング非負の整数(正の整数+0)
^-[1-9]d*124; 0//整合非正整数(負の整数+0)
^[1-9]d*.d*[1-9]d*/マッチング正浮動小数点数
^-([1-9]d*.d*[1-9]d*)//マッチング負浮動小数点数
^-?([[1-9]d*.d*|0.d*[1-9]d*124; 0?0+|0)//マッチング浮動小数点数
^[1-9]d*.d*[1-9]d*.0+|0//マッチング非負浮動小数点(プラス浮動小数点+0)
^(-([1-9]d*.d*[1-9]d*)は0?0+|0//マッチング非正浮動小数点(負浮動小数点+0)
注:大量のデータを処理する時に役に立ちます。具体的な応用に注意して修正してください。
特定の文字列にマッチする:
^[A-Za-z]+米ドル/マッチ26文字の文字列
^[A-Z]+$/マッチングは26文字の大文字で構成された文字列です。
^[a-z]+$/マッチングは26文字の小文字で構成されています。
^[A-Za-z 0-9]+米ドル/マッチングは、数字と26文字のアルファベットからなる文字列です。
^w+$/マッチングは、数字、26文字、またはアンダースコアからなる文字列です。
Regullar ExpressitionValidatorを使ってコントロールを検証する際の検証機能とその検証式を以下のように紹介します。
数字のみ入力できます。「^[0-9]*」
n桁の数字しか入力できません。「^d{n}」
少なくともn桁の数字しか入力できません。
m-n桁の数字しか入力できません。「^d{m,n}」
ゼロとゼロ以外の先頭の数字しか入力できません。「^((0|[1-9]、[0-9]*)」
2桁の小数の正の実数しか入力できません。「^[0-9]+(.[0-9]{2}?)」
1-3桁の小数の正の実数しか入力できません。「^[0-9]+(.[0-9]{1,3])?~」
ゼロ以外の正の整数しか入力できません。「^+?[1-9)[0-9]*$]
ゼロ以外の負の整数しか入力できません。「^-[1-9]、[0-9]*」
長さ3の文字しか入力できません。「^.{3}」
26文字のアルファベットからなる文字列しか入力できません。「^[A-Za-z]+」
26文字のアルファベットからなる文字列しか入力できません。「^[A-Z]+」
26文字小文字英字の文字列しか入力できません。「^[a-z]+」
数字と26文字のアルファベットからなる文字列しか入力できません。「^[A-Za-z 0-9]+」
数字、26文字、またはアンダースコアからなる文字列しか入力できません。
ユーザパスワードを検証します。「^[a-zA-Z]」w{5,17}の正しいフォーマットは、アルファベットで始まり、長さは6-18の間です。
文字、数字、下線のみが含まれます。
確認は^%&'、=?"を含んでいますか?などの文字:'^%',=??'x 22"+"
漢字のみ入力できます。「^[u 4 e 00-u 9 fa 5]、{0、}」
Emailアドレスを検証します。「^w++」*@@@+([-]]w+*.w+([-]]w+*.」
Internet URLを検証します。「^http://([w-]+」)+[w-]+(/[w-/?%%]*)?」
電話番号を確認します。「^((d{3,4})|d{3,4}-)?d{7,8}$
正確なフォーマットは:「XXXX-XXXX」、「XXXX-XXXXX」、「XXXX-XXXX」、
「XXXXX-XXXX」、「XXXXX」、「XXXX」。
身分証明書番号(15桁または18桁の数字)を検証します。
一年の12ヶ月を検証します。1−9]|1[0-2]$正しいフォーマットは、「01」-「09」および「1」「12」である。
一ヶ月の31日間検証します。1-9)|((1 124; 2)[0-9])|30 124; 31)$
正しいフォーマットは「01」「09」「1」「31」です。
中国語の文字にマッチする正規表現:[u 4 e 00-u 9 fa 5]
二バイトの文字にマッチします。(漢字も含めて):[^x 00-xff]
空行にマッチする正規表現:n[s|]*r
HTMLタグにマッチする正規表現:/<.*)>.*<(.*)/>
先頭のスペースにマッチする正規表現(^^s*)
Emailアドレスにマッチする正規表現:w+(-+.)*@@@@@@(-.')w+*.w+((-.')w+**.*)
URLにマッチする正規表現:http:/([w-]+)+[w-]+(/[w]-/?%=*)?
(1)アプリケーション:文字列の長さを計算する(1バイトの文字長計2、ASCII文字計1)
String.prototype.len=function(){return this.replace([^x 00-xff]/g,"aa").length;]
(2)アプリケーション:javascriptにはvbscriptのようなtrim関数がないので、この表現を使って実現できます。
s=http://www.9499.net/page1.htm;
s=s.replace(/.*/){0,}([^.]+).*/ig,“$2”)Page 1.httm
(5)アプリケーション:正規表現を利用して、ウェブフォーム内のテキストボックスに内容を入力することを制限します。
正規表現で制限すると中国語しか入力できません。onkeyup=「value=value.replace(/^u 4 E 00-u 9 FA 5)/g,'」
"onbeforepaste="clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/''')"/')"
正規表現では全角文字しか入力できません。onkeyup="value=value.replace(/[^uFF 00-uFFFF]/g,')
「onbeforepaste=」clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/''')、「
正規表現では数字しか入力できません。onkeyup=「value=value.replace(/[^d]/g、')」onbeforepaste=
「clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/[^d]/g,')」
正規表現では数字と英語しか入力できません。onkeyup="value=value.replace(/[W]/g,')
「onbeforepaste=」clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/[^d]/g,''
以上の内容は本文の全部の叙述です。皆さんが好きであれば、もっと良い正規表現に関する知識があれば、共有できますよ。
中国語の文字にマッチする正規表現:[u 4 e 00-u 9 fa 5]
中国語に合わせるのは本当に頭が痛いです。この表現があれば簡単です。
二バイトの文字にマッチします。(漢字も含めて):[^x 00-xff]
注:文字列の長さを計算するために使用できます。(2バイトの文字長計2、ASCII文字計1)
空白行にマッチする正規表現:ns*r
コメント:空白の行を削除するために使用できます。
HTMLタグにマッチした正規表現:<((*?)[>>*?*?
コメント:ネット上に流布されているバージョンは最悪です。これも一部しかマッチしていません。複雑な入れ子マークについてはまだ何もできません。
最初の空白文字にマッチする正規表現:^s*$
コメント:行頭の行末の空白文字(スペース、タブ、タブの交換などを含む)を削除するために使用できます。非常に有用な表現です。
Emailアドレスにマッチする正規表現:w+(-+.)*@@@@@@(-.')w+*.w+((-.')w+**.*)
コメント:フォーム検証はとても実用的です。
URLにマッチする正規表現:[a-zA-z]+:/[^s]*
コメント:ネットで流布されているバージョンの機能はとても限られています。
アカウントにマッチするかどうかは合法的です。(アルファベットの先頭は5-16バイトが許可されています。アルファベットの数字をアンダースコアにしてもいいです。):^[a-zA-Z 0-9_]4,15}
コメント:フォーム検証はとても実用的です。
国内電話番号とのマッチング:d{3}d{8}d{4}d{7}
コメント:マッチング形式は051-440522または021-878822のようです。
テンセントQQ号に一致します。[1-9][0-9]{4,}
コメント:テンセントQQ号は10000から始まります。
中国郵便番号に合わせて:[1-9]d{5}(?d)
コメント:中国郵便番号は6桁の数字です。
マッチング身分証:d{15}|d{18}
中国の身分証は15位か18位です。
ipアドレスにマッチします。d+.d+
コメント:ipアドレスを抽出する時に役に立ちます。
特定の数字にマッチする:
^[1-9]d*//整合正の整数
^-[1-9]d*/整合負の整数
^-1-9]d*$/整合整数
^[1-9]d*|0//マッチング非負の整数(正の整数+0)
^-[1-9]d*124; 0//整合非正整数(負の整数+0)
^[1-9]d*.d*[1-9]d*/マッチング正浮動小数点数
^-([1-9]d*.d*[1-9]d*)//マッチング負浮動小数点数
^-?([[1-9]d*.d*|0.d*[1-9]d*124; 0?0+|0)//マッチング浮動小数点数
^[1-9]d*.d*[1-9]d*.0+|0//マッチング非負浮動小数点(プラス浮動小数点+0)
^(-([1-9]d*.d*[1-9]d*)は0?0+|0//マッチング非正浮動小数点(負浮動小数点+0)
注:大量のデータを処理する時に役に立ちます。具体的な応用に注意して修正してください。
特定の文字列にマッチする:
^[A-Za-z]+米ドル/マッチ26文字の文字列
^[A-Z]+$/マッチングは26文字の大文字で構成された文字列です。
^[a-z]+$/マッチングは26文字の小文字で構成されています。
^[A-Za-z 0-9]+米ドル/マッチングは、数字と26文字のアルファベットからなる文字列です。
^w+$/マッチングは、数字、26文字、またはアンダースコアからなる文字列です。
Regullar ExpressitionValidatorを使ってコントロールを検証する際の検証機能とその検証式を以下のように紹介します。
数字のみ入力できます。「^[0-9]*」
n桁の数字しか入力できません。「^d{n}」
少なくともn桁の数字しか入力できません。
m-n桁の数字しか入力できません。「^d{m,n}」
ゼロとゼロ以外の先頭の数字しか入力できません。「^((0|[1-9]、[0-9]*)」
2桁の小数の正の実数しか入力できません。「^[0-9]+(.[0-9]{2}?)」
1-3桁の小数の正の実数しか入力できません。「^[0-9]+(.[0-9]{1,3])?~」
ゼロ以外の正の整数しか入力できません。「^+?[1-9)[0-9]*$]
ゼロ以外の負の整数しか入力できません。「^-[1-9]、[0-9]*」
長さ3の文字しか入力できません。「^.{3}」
26文字のアルファベットからなる文字列しか入力できません。「^[A-Za-z]+」
26文字のアルファベットからなる文字列しか入力できません。「^[A-Z]+」
26文字小文字英字の文字列しか入力できません。「^[a-z]+」
数字と26文字のアルファベットからなる文字列しか入力できません。「^[A-Za-z 0-9]+」
数字、26文字、またはアンダースコアからなる文字列しか入力できません。
ユーザパスワードを検証します。「^[a-zA-Z]」w{5,17}の正しいフォーマットは、アルファベットで始まり、長さは6-18の間です。
文字、数字、下線のみが含まれます。
確認は^%&'、=?"を含んでいますか?などの文字:'^%',=??'x 22"+"
漢字のみ入力できます。「^[u 4 e 00-u 9 fa 5]、{0、}」
Emailアドレスを検証します。「^w++」*@@@+([-]]w+*.w+([-]]w+*.」
Internet URLを検証します。「^http://([w-]+」)+[w-]+(/[w-/?%%]*)?」
電話番号を確認します。「^((d{3,4})|d{3,4}-)?d{7,8}$
正確なフォーマットは:「XXXX-XXXX」、「XXXX-XXXXX」、「XXXX-XXXX」、
「XXXXX-XXXX」、「XXXXX」、「XXXX」。
身分証明書番号(15桁または18桁の数字)を検証します。
一年の12ヶ月を検証します。1−9]|1[0-2]$正しいフォーマットは、「01」-「09」および「1」「12」である。
一ヶ月の31日間検証します。1-9)|((1 124; 2)[0-9])|30 124; 31)$
正しいフォーマットは「01」「09」「1」「31」です。
中国語の文字にマッチする正規表現:[u 4 e 00-u 9 fa 5]
二バイトの文字にマッチします。(漢字も含めて):[^x 00-xff]
空行にマッチする正規表現:n[s|]*r
HTMLタグにマッチする正規表現:/<.*)>.*<(.*)/>
先頭のスペースにマッチする正規表現(^^s*)
Emailアドレスにマッチする正規表現:w+(-+.)*@@@@@@(-.')w+*.w+((-.')w+**.*)
URLにマッチする正規表現:http:/([w-]+)+[w-]+(/[w]-/?%=*)?
(1)アプリケーション:文字列の長さを計算する(1バイトの文字長計2、ASCII文字計1)
String.prototype.len=function(){return this.replace([^x 00-xff]/g,"aa").length;]
(2)アプリケーション:javascriptにはvbscriptのようなtrim関数がないので、この表現を使って実現できます。
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, "");
}
(3)アプリケーション:正規表現でIPアドレスを分解し変換する
function IP2V(ip) //IP
{
re=/(d+).(d+).(d+).(d+)/g // IP
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
(4)アプリケーション:URLアドレスからファイル名を抽出するjavascriptプログラムs=http://www.9499.net/page1.htm;
s=s.replace(/.*/){0,}([^.]+).*/ig,“$2”)Page 1.httm
(5)アプリケーション:正規表現を利用して、ウェブフォーム内のテキストボックスに内容を入力することを制限します。
正規表現で制限すると中国語しか入力できません。onkeyup=「value=value.replace(/^u 4 E 00-u 9 FA 5)/g,'」
"onbeforepaste="clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/''')"/')"
正規表現では全角文字しか入力できません。onkeyup="value=value.replace(/[^uFF 00-uFFFF]/g,')
「onbeforepaste=」clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/''')、「
正規表現では数字しか入力できません。onkeyup=「value=value.replace(/[^d]/g、')」onbeforepaste=
「clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/[^d]/g,')」
正規表現では数字と英語しか入力できません。onkeyup="value=value.replace(/[W]/g,')
「onbeforepaste=」clipboardData.set Data(''text',clipboardData.get Data(''text').replace(/[^d]/g,''
以上の内容は本文の全部の叙述です。皆さんが好きであれば、もっと良い正規表現に関する知識があれば、共有できますよ。