Paggamit ng regular expressions
From LimeSurvey Manual
Ang Regular Expressions ay dapat magsimula at magtapos sa forward slash ("/"). Makakahanap ka ng magandang koleksyon ng mga regular expression sa https://www.regexlib.net/. Halos palaging gumagana ang mga pattern na ito kung nakapaloob ang mga ito sa mga forward slash.
Para subukan ang iyong regex, maaari mong gamitin ang regex tester na ito.
Mahalaga: Regular Expressions sa mga kondisyon
Tandaan na kapag gumagamit ng regular expressions sa condition editor, HUWAG isama ang panimula at pangwakas na slash.
Pag-validate ng email
Update (12/2018): Dahil sa ngayon ang mga domain name ay maaari nang magkaroon ng mga espesyal na karakter tulad ng “ü” at higit sa 3 karakter bilang domain name tulad ng .tech o .company, ang email regex sa ibaba ay sinusuri lamang kung may “@” at “.” sa ipinasok na email address.
/^.+?@.+?\..+$/
Kung nais mong i-validate ang isang address bawat linya, sa isang multiline na field ng mahabang teksto:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
Sa luma nang regex na ito, limitado sa 3 karakter ang domain name, kaya hindi nito sakop ang lahat ng available na domain:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Mga postcode
Mga postcode ng Australia:
/^[0-9]{4}/
Mga postcode ng Brazil
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Mga postcode ng Canada
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Mga postal code ng US
/^[0-9]{5}([- /]?[0-9]{4})?$/
Para magsimula sa zero ang postal code, gamitin ang:
/^[0-9]{5}(?:-[0-9]{4})?$/
Mga postcode ng UK
/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Tandaan na hindi ito masyadong eksakto, at mas kumplikado ang mas eksaktong pag-validate. Halimbawa, tingnan ang sagot sa StackOverflow at Wikipedia para sa karagdagang impormasyon.
Mga postcode ng France
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/
Napakatumpak ng expression sa itaas at susuriin nito kung umiiral ang French Department (unang dalawang digit), kasama ang mga overseas Department at overseas Territory (DOM-TOM).
Mga numero ng telepono
Mga numero ng telepono sa US
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/
o
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Tutugma ang pangalawang opsyon na ito sa lahat ng numero ng telepono sa Canada at US na may kasamang mga simbolong hindi digit, kabilang ang:
. ( ) - (space)
Magagawa mong itugma ang mga numero ng telepono na kahawig ng nasa ibaba:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Mga numero ng telepono sa Australia
Tumutugma ang mga sumusunod na pattern sa iba't ibang mobile at landline na numero ng telepono sa Australia, kasama ang may country prefix na "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- +61 2 3456 789
Ngunit hindi ang:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Binabalewala ang mga bracket, espasyo at gitling.
Ang mga bersyong may markang 'Very precise:' (Napakatumpak) na nakalista rito ay tumutugma sa unang apat o limang digit ng isang numero upang matiyak na wastong numero ito sa Australia.
Ang 'Not very precise:' (Hindi gaanong tumpak) ay tumutugma lamang sa una at ikalawang digit, kaya maaari nitong payagan ang mga di-wastong numero.
Lahat ng numero ng telepono sa Australia (mobile at landline - kinakailangan ang area code)
Napakatumpak:
/^\(?(?:\+?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})$/
Hindi gaanong tumpak:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Lahat ng numero ng telepono sa Australia (landline lang - kinakailangan ang area code)
Napakatumpak:
/^\(?(?:\+?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}$/
Hindi gaanong tumpak:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Mga numero ng landline sa New South Wales (opsyonal ang area code)
Napakatumpak:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Hindi gaanong tumpak:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Mga numero ng landline sa Victoria at Tasmania (opsyonal ang area code)
Napakatumpak:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Hindi gaanong tumpak:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Mga numero ng landline sa Queensland (opsyonal ang area code)
Napakatumpak:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Hindi gaanong tumpak:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Mga numero ng landline sa South Australia, Northern Territory, at Western Australia (opsyonal ang area code)
Napakatumpak:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
Hindi gaanong tumpak:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Mga numero ng mobile phone sa Australia lang
Napakatumpak:
/^(?:\+?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}$/
Hindi gaanong tumpak:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Numero ng telepono sa Belgium
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/
Numero ng mobile phone sa Belgium
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Numero ng telepono sa France
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Numero ng mobile phone sa France
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Numero ng telepono sa Luxembourg
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Numero ng mobile phone sa Luxembourg
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Mga marka sa Germany (may opsyonal na plus o minus)
/^[1-6]{1}[\+|\-]?$/
Pag-validate ng edad
Halimbawa: Edad 20-99
/([2-9][0-9])/
Halimbawa: Edad 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Halimbawa: Edad 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Pag-validate ng numero
Mga numero mula 1 hanggang 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}$/ does the same as above but should run a little faster
Mga numero mula 1 hanggang 999, 1.000 hanggang 999.999 hanggang 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Tumatanggap ng mga numero mula 1 hanggang 999, 1.000 hanggang 999.999 hanggang 999.999.999 ngunit tinatanggihan ang mga numerong tulad ng 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Pag-validate ng numero na may opsyonal na decimal (para sa presyo)
Tumatanggap ng mga numero mula 0 hanggang 199, na may opsyonal na 2 decimal:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/
Pag-validate ng numero na may thousand separator
Space bilang separator, walang minus
/^(?!0)\d{1,3}(\ \d{3})*$/
Tuldok bilang separator, pinapayagan ang minus
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Pinipilit nito ang dalawang decimal point at tumatanggap ng mga numero mula 1.00 hanggang 999,999,999.00 na may opsyonal na kuwit na naghihiwalay sa libo/milyon kasama ang lahat ng sumusunod: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 ngunit hindi ang 1,23.00, 12,3.4 o 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Katulad ng nasa itaas: Pinipilit ang dalawang decimal point ngunit tumatanggap ng "0" bago ang decimal separator na ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Katulad ng nasa itaas, ngunit opsyonal ang dalawang decimal point:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/
Buwan (1-12)
Kung nais mong itanong ang buwan ng kapanganakan ng isang tao, maaari mong i-validate ang input gaya ng sumusunod:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Minimum na lapad (nakatakda sa 3 sa halimbawang ito)
/^.{3,}$/
Currency
US currency (opsyonal ang dollar sign at cents)
/^\$?\d+(\.(\d{2}))?$/
Suriin ang paggamit ng kuwit:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Presyong Swiss
Isang numero na may dalawang decimal na numero pagkatapos ng decimal point, kung saan ang huli ay 5 o 0:
/^(\d+)(\.\d(05)?)?$/
Pag-validate ng score
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Pag-validate ng text
Ang uri ng tanong na Maraming maikling text ay kasalukuyang hindi sumusuporta sa minimum o maximum na sagot. Isang paraan para malampasan ito ay gamitin ang uri ng tanong na Mahabang free text na may regular expression.
Sinusuri ng expression sa ibaba ang hindi bababa sa isang salita bawat linya para sa hindi bababa sa 3 linya at hindi hihigit sa 10 linya:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
Kung gusto mo, halimbawa, ng limang salita bawat linya, maaari mong palitan ang una at huling star/asterisk ng {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Kung gusto mo ng isa o higit pang salita bawat linya (mula linya 1 hanggang linya 5), maaari mong palitan ang nilalaman sa loob ng huling curly braces ng 0,4 (tandaan na 0 ang ginagamit dahil tinutugma na ang unang linya).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Bilang ng salita
Nililimitahan ng sumusunod ang bilang ng mga salitang pinapayagan sa minimum na 1 at maximum na 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Para taasan ang minimum, baguhin ang zero na bahagi ng {0,199}.
Para taasan o bawasan ang maximum, baguhin ang "199" na bahagi ng {0,199}.
Pag-validate ng oras
Maraming paraan para isulat ang format ng oras. Ilan sa mga posibleng opsyon ay 12 oras o 24 oras, may segundo o wala. Bagama't opsyon ang paggamit ng uri ng tanong na petsa (maaari rin itong kumuha ng oras), maaari mong gamitin ang uri ng tanong na Maikling free text na may isa sa mga regular expression para sa pag-validate sa ibaba.
Sinusuri ng sumusunod na tatlong validation string ang 24-oras na oras (ayon sa pagkakasunod) na walang segundo, na may opsyonal na segundo, at panghuli ay may kinakailangang segundo:
/^(?:[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]$/
Tinutugma ng sumusunod na tatlo ang 12-oras na oras, tulad ng nasa itaas, na may segundo, opsyonal na segundo, at kinakailangang segundo:
/^(?">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))$/
Tinutugma ng sumusunod na tatlo ang alinman sa 12 o 24 oras na oras, tulad ng nasa itaas, na may segundo, opsyonal na segundo, at kinakailangang segundo:
/^(?:(?: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])$/
Mga estado ng US
Para i-validate ang isang estado, gamitin ang sumusunod (Texas ang halimbawa):
- TX uppercase lang:
/^(TX)$/
- tx lowercase lang:
/^(tx)$/
- TX uppercase o lowercase:
/^([T|t][X|x])$/
Profanity Filter
Para i-filter ang mga bastos na salita mula sa isang sagot:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Palitan ang "ENTERPROFANITYHERE" ng bastos na salitang nais mong harangin.
Papayagan ng \b na makapasa ang mga salitang gaya ng "assassination" at "hello" kapag inilagay mo ang "ass" o "hell" bilang bastos na salita. Gumagana rin ito kung nais mong alisin ang iba pang salita, pangalan, atbp. mula sa mga sagot.
Mga kapaki-pakinabang na link
Sa simula ng seksyon ng wiki na ito, inirerekomenda naming gamitin ang https://regex101.com/ para subukan o gumawa ng mga regular expression. Maaari mo ring gamitin ang https://www.regextester.com/ para gumawa ng mga expression kung hindi ka nasiyahan sa unang opsyon. Maaari mong gamitin ang https://extendsclass.com/regex-tester.html para i-visualize ang mga regular expression.