x

Main chapters

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Quick start guide
  3. LimeSurvey CE - Installation
  4. How to design a good survey (Guide)
  5. Getting started
  6. LimeSurvey configuration
  7. Introduction - Surveys
  8. View survey settings
  9. View survey menu
  10. View survey structure
  11. Introduction - Questions
  12. Introduction - Question Groups
  13. Introduction - Surveys - Management
  14. Survey toolbar options
  15. Multilingual survey
  16. Quick start guide - ExpressionScript
  17. Advanced features
  18. General FAQ
  19. Troubleshooting
  20. Workarounds
  21. License
  22. Version change log
  23. Plugins - Advanced
 Actions

Using regular expressions/ja: Difference between revisions

From LimeSurvey Manual

Bravehorse (talk | contribs)
Created page with "現在、自由回答(短い・複数)質問タイプでは、最小値・最大値はサポートしていません。別のやり方として、正規表現つきで自..."
Bravehorse (talk | contribs)
No edit summary
 
(42 intermediate revisions by 2 users not shown)
Line 6: Line 6:
[https://regex101.com/ こちらの正規表現テスター]で自作の正規表現をテストすることができます。
[https://regex101.com/ こちらの正規表現テスター]で自作の正規表現をテストすることができます。


''無事にテストをパスした正規表現を使ってください。''
{{Note|このウィキセクションを改善するため、新しい(潜在的な)LimeSurveyユーザーがこの機能をより良く理解できるよう、動作確認した正規表現を追加してください。}}
 
{{Alert|title=以下の例は、すべて1行で記述してください。}}


例(すべて1行で記述することに注意してください):


=重要: 条件における正規表現=
=重要: 条件における正規表現=


条件エディターで正規表現を使用する場合は、前後のスラッシュを含めないでください。
条件エディターで正規表現を使用する場合は、前後のスラッシュを含めないでください。


=メールアドレスの検証=
=メールアドレスの検証=


更新(2018/12): 最近のドメイン名では、“ü”のような特殊文字だけでなく、.''tech''や.''company''のような3文字以上の(トップレベル)ドメイン名が使えるため、下記の電子メール正規表現では、入力された電子メールアドレスに“@”および“.”が含まれるかどうかだけをチェックします。
<source lang="html">
/^.+?@.+?\..+$/
</source>
複数行の長いテキストフィールドにおいて、1行で1つのアドレスを検証する場合。
<source lang="html">
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
</source>
以下の古い正規表現は、ドメイン名が3文字に制限されており、使用可能なすべてのドメインに対応していません。
<source lang="html">
<source lang="html">
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Line 37: Line 52:


  <source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>
  <source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>
ゼロで始まる郵便番号は、次のようにします。
<source lang="html">/^[0-9]{5}(?:-[0-9]{4})?$/</source>


==イギリスの郵便番号==
==イギリスの郵便番号==
Line 43: Line 62:


この表現は厳密には正確ではなく、実際の検証はもっと複雑です。詳細は、[http://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer]や[http://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia]などを参照してください。
この表現は厳密には正確ではなく、実際の検証はもっと複雑です。詳細は、[http://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer]や[http://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia]などを参照してください。
==フランスの郵便番号==
<source lang="html">/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/</source>
上記の表現は非常に正確であり、最初の2桁で海外県・海外領土を含むフランスの行政区画が存在するかどうかをチェックします。


=電話番号=
=電話番号=


==アメリカの電話番号==
==アメリカの電話番号==


<source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</source>
<source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</source>


または
または
Line 92: Line 119:
<source lang="html">/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
<source lang="html">/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
</source>
</source>


簡易版:
簡易版:
Line 103: Line 129:


<source lang="html">/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/</source>


簡易版:
簡易版:
Line 134: Line 159:


<source lang="html">/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/</source>


簡易版:
簡易版:
Line 155: Line 179:


<source lang="html">/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/</source>
<source lang="html">/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/</source>


簡易版:
簡易版:
Line 179: Line 202:
  <source lang="html">/([2-9][0-9])/</source>
  <source lang="html">/([2-9][0-9])/</source>


=年齢の検証=
例: 20-99歳
<source lang="html">/([2-9][0-9])/</source>


例: 18-35歳
例: 18-35歳
  <source lang="html">/(1[8-9]|2[0-9]|3[0-5])/</source>
  <source lang="html">/(1[8-9]|2[0-9]|3[0-5])/</source>


例: 19-65歳
例: 19-65歳
  <source lang="html">/^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>
  <source lang="html">/^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>
=数値の検証=


=数値の検証=
=数値の検証=
Line 199: Line 231:
  <source lang="html">/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/</source>
  <source lang="html">/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/</source>


==千の桁区切りを使用した数値検証==
スペースを区切り文字とし、負の数でない場合、
<source lang="html">/^(?!0)\d{1,3}(\ \d{3})*$/</source>
ピリオドを区切り文字とし、負の数を含める場合。
<source lang="html">/^-?(?!0)\d{1,3}(\.\d{3})*$/</source>


小数点以下2桁が必須で、3桁ずつのカンマ区切り(省略可)があり、1.00から999,999,999.00までにマッチさせる例。1.00、1,000.00、12,345.67、12345,02、123,456,468.00、1234566.00、123456789.00にマッチし、1,23.00、12,3.4、1234,43.04にはマッチしない。
小数点以下2桁が必須で、3桁ずつのカンマ区切り(省略可)があり、1.00から999,999,999.00までにマッチさせる例。1.00、1,000.00、12,345.67、12345,02、123,456,468.00、1234566.00、123456789.00にマッチし、1,23.00、12,3.4、1234,43.04にはマッチしない。
Line 216: Line 253:


=最小の桁数(下記の例では3桁以上)=
=最小の桁数(下記の例では3桁以上)=


  <source lang="html">/^.{3,}$/</source>
  <source lang="html">/^.{3,}$/</source>


=通貨=
=通貨=


==アメリカの通貨($記号、セント)==
==アメリカの通貨($記号、セント)==
Line 233: Line 273:


  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>
  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>


=点数の検証=
=点数の検証=


==1から10==
==1から10==
Line 243: Line 285:


  <source lang="html">/^[1-9]?[0-9]{1}$|^100$/</source>
  <source lang="html">/^[1-9]?[0-9]{1}$|^100$/</source>


=テキストの検証=
=テキストの検証=


現在、自由回答(短い・複数)質問タイプでは、最小値・最大値はサポートしていません。別のやり方として、正規表現つきで自由回答(長い)質問タイプを使用する方法があります。
現在、自由回答(短い・複数)質問タイプでは、最小値・最大値はサポートしていません。別のやり方として、正規表現つきで自由回答(長い)質問タイプを使用する方法があります。


The following test for at least one word per line for at least 3 lines and no more than 10 lines.
次の例は、1行に1単語あり、少なくとも3行、多くとも10行であることをテストします。


  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is</source>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is</source>


If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g.
1行あたり5単語にしたい場合は、最初と最後のアスタリスクを{4,}に置き換えます。


<source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</source>
<source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</source>


If you wanted one or more words per line on between 1 and 5 lines, you can change the content of the last curley braces to '''0,4''' (note you use 0 because you're already matching the first line).
1行目から5行目まで、各行に1単語以上あるようにしたい場合は、最後の中括弧の中身を'''0,4'''に変更します(最初の行ですでにマッチしているので0を使います)。


  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is</source>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is</source>


==Word count==
==ワード数==


  The following restricts the number of words allowed to a minimum of 1 and a maximum of 200
  以下の例では、許容される単語の数を最小1と最大200に制限しています。


<source lang="html">/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</source>
<source lang="html">/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</source>


  To increase the minimum change the zero part of {0,199}
  最小値を増やしたいときは、{0,199}のゼロの部分を変更します。


To increase or decrease the maximum change the "199" part of {0,199}
最大値を増減したいときは、{0,199}の''199''の部分を変更します。


=Time validation=
=時刻の検証=


There are a number of ways of writing time formats. Some of the possible options are 12 hour or 24 hour, with seconds or without. Although it is an option to use the date question type (it can also capture time) you can use "short free text" with one of the validation regular expressions below:


The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.
時刻を記述する方法はいくつかあります。例えば、12時間か24時間か、秒ありか秒なしです。日付質問タイプ(現在の時刻を取得することもできます)を使用するほか、"自由回答(短い)"質問タイプを使用し、以下の正規表現のいずれかで検証することもできます。
 
次の3つの検証文字列は、24時間表示の時刻をテストするもので、(出現順に)秒なし、秒任意、秒必須の例です。


<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</source>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</source>
Line 282: Line 327:
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</source>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</source>


 
次の3つは12時間表示の時刻にマッチし、上記と同様、秒なし、秒任意、秒必須の例です。
 
The following three match 12 hour time, as above with seconds, optional seconds and with seconds required


<source lang="html">/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/</source>
<source lang="html">/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/</source>
Line 292: Line 335:
<source lang="html">/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/</source>
<source lang="html">/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/</source>


 
次の3つは12または24時間表示の時刻にマッチし、上記と同様、秒なし、秒任意、秒必須の例です。
 
The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required


<source lang="html">/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/</source>
<source lang="html">/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/</source>
Line 302: Line 343:
<source lang="html">/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/</source>
<source lang="html">/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/</source>


=US states=
=アメリカの州=
 
 
以下は、州の検証の例(テキサス州)です。
*TX(大文字のみ) = <source lang="html">/^(TX)$/</source>
*tx(小文字のみ) = <source lang="html">/^(tx)$/</source>
*TX(大文字または小文字) = <source lang="html">/^([T|t][X|x])$/</source>
 
 
=不適切語フィルター=
 
 
不適切な単語を回答からフィルターする方法です。
 
<source lang="html">/^(?i)((?!\b不適切語\b).)*$(?-i)/</source>


To validate for one state use the following (example is Texas):
上記の"不適切語"の部分を適宜変更します。
*TX uppercase only = <source lang="html">/^(TX)$/</source>
*tx lowercase only = <source lang="html">/^(tx)$/</source>
*TX upper or lowercase = <source lang="html">/^([T|t][X|x])$/</source>


=Profanity Filter=
\bをつけると、"ass"や"hell"を不適切語としている場合に、"assassination"や"hello"を許可します。これは、他の単語や名前を回答から取り除く場合にも機能します。


To filter profanity words from an answer:


<source lang="html">/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/</source>
=参考リンク=


Replace "ENTERPROFANITYHERE" with your bad word.


The \b will allow passing of words such as "assassination" & "hello" if you enter "ass" or "hell" as your profanity word. This also works if you are trying to omit other words, names etc. from answers.
このウィキセクションの冒頭で、https://regex101.com/を使って正規表現をテスト/作成することをお勧めしています。このサイトに不満がある場合は、https://www.regextester.com/を使用して式を作成することもできます。https://extendsclass.com/regex-tester.htmlを使用し、正規表現を視覚化することができます。

Latest revision as of 11:58, 28 November 2022

正規表現は始めと終わりがスラッシュ("/")でなければなりません。http://www.regexlib.net/に正規表現の事例集があります。スラッシュで挟まれたものはほぼすべて機能します。

こちらの正規表現テスターで自作の正規表現をテストすることができます。

このウィキセクションを改善するため、新しい(潜在的な)LimeSurveyユーザーがこの機能をより良く理解できるよう、動作確認した正規表現を追加してください。
  以下の例は、すべて1行で記述してください。 : {{{1}}}



重要: 条件における正規表現

条件エディターで正規表現を使用する場合は、前後のスラッシュを含めないでください。


メールアドレスの検証

更新(2018/12): 最近のドメイン名では、“ü”のような特殊文字だけでなく、.techや.companyのような3文字以上の(トップレベル)ドメイン名が使えるため、下記の電子メール正規表現では、入力された電子メールアドレスに“@”および“.”が含まれるかどうかだけをチェックします。

/^.+?@.+?\..+$/

複数行の長いテキストフィールドにおいて、1行で1つのアドレスを検証する場合。

/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/

以下の古い正規表現は、ドメイン名が3文字に制限されており、使用可能なすべてのドメインに対応していません。

/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

郵便番号

オーストラリアの郵便番号

/^[0-9]{4}/

ブラジルの郵便番号

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

カナダの郵便番号

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

アメリカの郵便番号

/^[0-9]{5}([- /]?[0-9]{4})?$/

ゼロで始まる郵便番号は、次のようにします。

/^[0-9]{5}(?:-[0-9]{4})?$/

イギリスの郵便番号

/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

この表現は厳密には正確ではなく、実際の検証はもっと複雑です。詳細は、StackOverflow answerWikipediaなどを参照してください。

フランスの郵便番号

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/

上記の表現は非常に正確であり、最初の2桁で海外県・海外領土を含むフランスの行政区画が存在するかどうかをチェックします。


電話番号

アメリカの電話番号

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/

または

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

二つ目の例は、数字以外の記号を含むカナダとアメリカの電話番号用です。

 . ( ) - (space)

この表現では、次のような電話番号にもマッチします。

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

オーストラリアの電話番号

次のパターンは、"+61"の国コードを含む、オーストラリアのすべての携帯・固定の電話番号にマッチします。

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

以下のものにはマッチしません。

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

括弧、スペース、ハイフンは無視されます。

次に挙げる'正確版'は、最初の4ないし5桁が有効なオーストラリアの電話番号であることを確認します。

'簡易版'では、最初の2桁しか見ていないため、無効な番号にもマッチします。

すべてのオーストラリアの電話番号(携帯・固定、市外局番込み)

正確版:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

簡易版:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

すべてのオーストラリアの電話番号(固定のみ、市外局番含む)

正確版:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/

簡易版:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

ニューサウスウェールズの固定電話番号(市外局番は省略可)

正確版:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

簡易版:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

ビクトリア、タスマニアの固定電話番号(市外局番省略可)

正確版:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

簡易版:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

クイーンズランドの固定電話番号(市外局番は省略可)

正確版:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

簡易版:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

南オーストラリア、北部準州、西オーストラリアの固定電話番号(市外局番は省略可)

正確版:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/

簡易版:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

オーストラリアの携帯電話番号

正確版:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

簡易版:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

ベルギーの電話番号

/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

ベルギーの携帯電話番号

/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

フランスの電話番号

/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/

フランスの携帯電話番号

/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/

ルクセンブルクの電話番号

/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

ルクセンブルクの携帯電話番号

/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

ドイツマルク(正負記号付きも可)

/^[1-6]{1}[\+|\-]?$/

年齢の検証

例: 20-99歳

/([2-9][0-9])/


年齢の検証

例: 20-99歳

/([2-9][0-9])/

例: 18-35歳

/(1[8-9]|2[0-9]|3[0-5])/

例: 19-65歳

/^(1[8-9]|[2-5][0-9]|6[0-5])$/


数値の検証

数値の検証

1から99999までの数値

/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ も同じですが、少し早く動作します

1から999、1.000から999.999、999.999.999まで

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

1から999、1.000から999.999、999.999.999までにマッチしますが、999.1.1、94.22.22、999.1.22、999.11.1、999.1.333といったものにはマッチしません。

小数点込みの数値の検証(価格向け)

0から199(小数点以下2桁があっても可)にマッチさせる例。

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

千の桁区切りを使用した数値検証

スペースを区切り文字とし、負の数でない場合、

/^(?!0)\d{1,3}(\ \d{3})*$/

ピリオドを区切り文字とし、負の数を含める場合。

/^-?(?!0)\d{1,3}(\.\d{3})*$/

小数点以下2桁が必須で、3桁ずつのカンマ区切り(省略可)があり、1.00から999,999,999.00までにマッチさせる例。1.00、1,000.00、12,345.67、12345,02、123,456,468.00、1234566.00、123456789.00にマッチし、1,23.00、12,3.4、1234,43.04にはマッチしない。

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

上記に似た例: 小数点以下2桁が必須で、桁区切り","の前に"0"を許容する例。

/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

上記と同様で、小数点以下を省略可とする例:

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

月(1-12)

誕生した月に関する質問の回答を検証する場合:

/^[0]*[1-9]$|^[0]*1[0-2]$/

最小の桁数(下記の例では3桁以上)

/^.{3,}$/


通貨

アメリカの通貨($記号、セント)

/^\$?\d+(\.(\d{2}))?$/

カンマを使用する場合:

/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

スイスの価格表示

小数点以下に2桁あり、小数点以下第2位の桁が0か5となる数値:

/^(\d+)(\.\d(05)?)?$/


点数の検証

1から10

/^[1-9]{1}$|^10$/

1から100

/^[1-9]?[0-9]{1}$|^100$/


テキストの検証

現在、自由回答(短い・複数)質問タイプでは、最小値・最大値はサポートしていません。別のやり方として、正規表現つきで自由回答(長い)質問タイプを使用する方法があります。

次の例は、1行に1単語あり、少なくとも3行、多くとも10行であることをテストします。

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is

1行あたり5単語にしたい場合は、最初と最後のアスタリスクを{4,}に置き換えます。

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

1行目から5行目まで、各行に1単語以上あるようにしたい場合は、最後の中括弧の中身を0,4に変更します(最初の行ですでにマッチしているので0を使います)。

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is

ワード数

以下の例では、許容される単語の数を最小1と最大200に制限しています。
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
最小値を増やしたいときは、{0,199}のゼロの部分を変更します。

最大値を増減したいときは、{0,199}の199の部分を変更します。

時刻の検証

時刻を記述する方法はいくつかあります。例えば、12時間か24時間か、秒ありか秒なしです。日付質問タイプ(現在の時刻を取得することもできます)を使用するほか、"自由回答(短い)"質問タイプを使用し、以下の正規表現のいずれかで検証することもできます。

次の3つの検証文字列は、24時間表示の時刻をテストするもので、(出現順に)秒なし、秒任意、秒必須の例です。

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

次の3つは12時間表示の時刻にマッチし、上記と同様、秒なし、秒任意、秒必須の例です。

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/

次の3つは12または24時間表示の時刻にマッチし、上記と同様、秒なし、秒任意、秒必須の例です。

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/

アメリカの州

以下は、州の検証の例(テキサス州)です。

  • TX(大文字のみ) =
    /^(TX)$/
    
  • tx(小文字のみ) =
    /^(tx)$/
    
  • TX(大文字または小文字) =
    /^([T|t][X|x])$/
    


不適切語フィルター

不適切な単語を回答からフィルターする方法です。

/^(?i)((?!\b不適切語\b).)*$(?-i)/

上記の"不適切語"の部分を適宜変更します。

\bをつけると、"ass"や"hell"を不適切語としている場合に、"assassination"や"hello"を許可します。これは、他の単語や名前を回答から取り除く場合にも機能します。


参考リンク

このウィキセクションの冒頭で、https://regex101.com/を使って正規表現をテスト/作成することをお勧めしています。このサイトに不満がある場合は、https://www.regextester.com/を使用して式を作成することもできます。https://extendsclass.com/regex-tester.htmlを使用し、正規表現を視覚化することができます。