Js የአንድ ንዑስ ሕብረቁምፊ ክስተት። ከሕብረቁምፊዎች ጋር ለመስራት የጃቫስክሪፕት ዘዴዎች። አብሮ የተሰራ የሕብረቁምፊ ነገር

በጃቫስክሪፕት ውስጥ መደበኛ አገላለጾች በ RegExp ነገሮች ይወከላሉ። የ RegExp እቃዎች የ RegExp () ገንቢን በመጠቀም ሊፈጠሩ ይችላሉ, ነገር ግን ብዙ ጊዜ የሚፈጠሩት ልዩ የቃል አገባብ በመጠቀም ነው. የሕብረቁምፊ ቃል በቃል በትዕምርተ ጥቅስ ውስጥ እንደ ተዘጉ ቁምፊዎች እንደሚገለጽ ሁሉ መደበኛ የቃላት አገላለጽ በጨረፍታ ጥንድ / .

/ስርዓተ-ጥለት/ባንዲራ አዲስ RegExp ("ስርዓተ-ጥለት"[፣ የፍለጋ አማራጮች])

ስርዓተ-ጥለት- ለመፈለግ መደበኛ አገላለጽ (በኋላ ለመተካት ተጨማሪ) ፣ እና ባንዲራዎች - የማንኛውም የቁምፊዎች ጥምረት ሕብረቁምፊ g (ዓለም አቀፍ ፍለጋ) ፣ i (ጉዳዩ አስፈላጊ አይደለም) እና m (ባለብዙ መስመር ፍለጋ)። የመጀመሪያው ዘዴ ብዙ ጊዜ ጥቅም ላይ ይውላል, ሁለተኛው - አንዳንድ ጊዜ. ለምሳሌ, ሁለት እንደዚህ ያሉ ጥሪዎች እኩል ናቸው.

የፍለጋ አማራጮች

መደበኛ አገላለጽ ስንፈጥር, ተጨማሪ የፍለጋ አማራጮችን መግለጽ እንችላለን

በጃቫስክሪፕት መደበኛ መግለጫዎች ውስጥ ያሉ ቁምፊዎች

ምልክትመዛግብት
ፊደል-ቁጥር ቁምፊዎችከራሳቸው ጋር ይጣጣማሉ
\0 NUL ቁምፊ (\u0000)
\tትር (\u0009)
\nየመስመር ምግብ (\u000A)
\vአቀባዊ ትር (\u000B)
\fየገጽ ትርጉም (\u000C)
\rየመጓጓዣ መመለስ (\u000D)
\xnnከላቲን ስብስብ ቁምፊ, በሄክሳዴሲማል ቁጥር nn የተገለጸ; ለምሳሌ \x0A ከ \n ጋር አንድ ነው።
\xxxxየዩኒኮድ ቁምፊ በሄክሳዴሲማል ቁጥር xxxx; ለምሳሌ, \u0009 ከ \t. ጋር ተመሳሳይ ነው
\cXየመቆጣጠሪያው ቁምፊ "X"፣ ለምሳሌ፣ ቅደም ተከተል \cJ ከአዲሱ መስመር ቁምፊ ጋር እኩል ነው \n
\ ለመደበኛ ቁምፊዎች - ልዩ ያደርጋቸዋል. ለምሳሌ፣ አገላለጹ /ሰ/ በቀላሉ የ"s" ገጸ ባህሪን ይፈልጋል። እና ከ s በፊት \\\ ን ካስቀመጡት /\s/ ቀድሞውኑ የጠፈር ቁምፊን ያመለክታል እና በተቃራኒው, ገጸ ባህሪው ልዩ ከሆነ, ለምሳሌ *, ከዚያ \ መደበኛ "ኮከብ" ባህሪ ያደርገዋል. ለምሳሌ /a*/ 0 ወይም ከዚያ በላይ ተከታታይ የ"a" ቁምፊዎችን ይፈልጋል። በኮከብ ምልክት "a*" ለማግኘት - \\ በልዩው ፊት ለፊት. ምልክት፡ /a\*/
^ የግቤት ውሂቡን መጀመሪያ ያሳያል። የባለብዙ መስመር መፈለጊያ ባንዲራ ("m") ከተዋቀረ በአዲስ መስመር መጀመሪያ ላይ ይቃጠላል ለምሳሌ /^A/ በ "A" ውስጥ "A" አያገኝም, ግን የመጀመሪያውን ያገኛል "A" በ "A" ውስጥ.
$ የግቤት ውሂቡን መጨረሻ ያሳያል። የባለብዙ መስመር መፈለጊያ ባንዲራ ከተዘጋጀ በመስመሩ መጨረሻ ላይም ይሰራል ለምሳሌ /t$/ በ"በላተኛ" ውስጥ "t" አያገኝም, ነገር ግን "በሉ" ውስጥ ያገኛል.
* 0 ወይም ከዚያ በላይ ጊዜ መደጋገምን ያሳያል። ለምሳሌ /bo*/ በ"A ghost booooed" እና "b" በ"A bird warbled" ውስጥ "boooo" ቢያገኛቸውም "ፍየል ተንጫጫ" ውስጥ ግን ምንም ነገር አያገኝም።
+ 1 ወይም ከዚያ በላይ ጊዜ መደጋገምን ያሳያል። ከ (1፣) ጋር እኩል ነው። ለምሳሌ፣ /a+/ በ"ከረሜላ" እና በ"caaaaaaandy" ውስጥ ካለው "a" ጋር ይዛመዳል።
? ኤለመንቱ ሊኖር ወይም ላይኖር እንደሚችል ያመለክታል። ለምሳሌ፣ /e?le?/ በ “መልአክ” እና “ሌ” በ “አንግል” ውስጥ ከአንዱ መመዘኛዎች በኋላ ወዲያውኑ ጥቅም ላይ ከዋለ * ፣ + ፣? , ወይም () , ከዚያም "ስግብግብ ያልሆነ" ፍለጋን ይገልፃል (የሚቻለውን አነስተኛውን ጊዜ በመድገም, ወደ ቀጣዩ የስርዓተ-ጥለት አካል) ከነባሪው "ስግብግብ" ሁነታ በተቃራኒ, ይህም የድግግሞሾችን ብዛት ከፍ ያደርገዋል, ምንም እንኳን ቢሆን. የሚቀጥለው የስርዓተ-ጥለት አካል እንዲሁ ይዛመዳል። በቅድመ-እይታ ውስጥ ጥቅም ላይ የዋለ, በሰንጠረዡ ውስጥ በ (?=), (?!) እና (?:) ስር ይገለጻል.
. (የአስርዮሽ ነጥብ) ከአዲስ መስመር ውጭ ማንኛውንም ቁምፊ ይወክላል፡ \n \r \u2028 ወይም \u2029። (አዲስ መስመሮችን ጨምሮ ማንኛውንም ቁምፊ ለመፈለግ [\s\S] መጠቀም ይችላሉ። ለምሳሌ, /.n/ በ "አይ, ፖም በዛፉ ላይ" በሚለው ውስጥ "an" እና "on" ጋር ይጣጣማሉ, ግን "ናይ" አይደለም.
(x)x ፈልጎ ያስታውሳል። ይህ "የማስታወሻ ቅንፎች" ይባላል. ለምሳሌ፣ /(foo)/ በ"foo bar" ውስጥ "foo" ፈልጎ ያስታውሳል። የተገኘው ንኡስ ሕብረቁምፊ በፍለጋ የውጤት ድርድር ወይም አስቀድሞ በተገለጹት የ RegExp ነገር ውስጥ ይከማቻል፡ $1፣ ...፣ $9 በተጨማሪም፣ ቅንፍዎቹ በውስጣቸው ያለውን ወደ አንድ የስርዓተ-ጥለት አካል ያዋህዳሉ። ለምሳሌ, (abc)* - abc 0 ወይም ከዚያ በላይ ጊዜ ይድገሙት.
(?:x)xን ያገኛል፣ ግን ያገኘውን አያስታውስም። ይህ "የማስታወሻ ቅንፍ" ይባላል. የተገኘው ንኡስ ሕብረቁምፊ በውጤቶች ድርድር እና በ RegExp ባህሪያት ውስጥ አይከማችም እንደ ሁሉም ቅንፎች በውስጣቸው ያለውን ወደ አንድ ንዑስ ንድፍ ያዋህዳሉ።
x(?=y)x በ y ከተከተለ ብቻ xን ያገኛል። ለምሳሌ /Jack(?=Sprat)/ ከ"ጃክ" ጋር የሚዛመደው በ"ስፕራት" ከተከተለ ብቻ ነው። /Jack(?=Sprat|Frost)/ ከ"ጃክ" ጋር የሚዛመደው በ"Sprat" ወይም "Frost" ከተከተለ ብቻ ነው። ነገር ግን "Sprat" ወይም "Frost" በፍለጋ ውጤቱ ውስጥ አይታዩም.
x(?! y)x በ y ካልተከተለ ብቻ xን ያገኛል። ለምሳሌ /\d+(?!\.)/ ከቁጥር ጋር የሚዛመደው በአስርዮሽ ነጥብ ካልተከተለ ብቻ ነው። /\d+(?!\.)/.exec("3.141") 141 ያገኛል፣ ግን 3.141 አይደለም።
x|yx ወይም yን ያገኛል። ለምሳሌ, /አረንጓዴ|ቀይ/ በ "አረንጓዴ ፖም" እና "ቀይ" በ "ቀይ ፖም" ውስጥ "አረንጓዴ" ይዛመዳል.
(n)የት n አዎንታዊ ኢንቲጀር ነው. የቀደመውን አካል ድግግሞሾችን በትክክል ያገኛል። ለምሳሌ /a(2)/ በ"ከረሜላ" ውስጥ "a"ን አያገኝም ነገር ግን ሁለቱንም a's በ"ካንዲ" እና የመጀመሪያዎቹን ሁለቱን በ"caaandy" ውስጥ ያገኛል።
(n፣)የት n አዎንታዊ ኢንቲጀር ነው. n ወይም ተጨማሪ የአንድ ንጥረ ነገር ድግግሞሾችን ያገኛል። ለምሳሌ, /a(2,) "a" በ "ከረሜላ" ውስጥ አያገኝም, ነገር ግን ሁሉንም "a" በ "ካንዲ" እና "caaaaaaandy" ውስጥ ያገኛል.
(n,m)n እና m አዎንታዊ ኢንቲጀር የሆኑበት። ከ n እስከ m የንጥሉ ድግግሞሾችን ያግኙ።
የቁምፊ ስብስብ። ከተዘረዘሩት ቁምፊዎች ውስጥ የትኛውንም ያገኛል። ሰረዝን በመጠቀም ክፍተትን መጠቆም ይችላሉ። ለምሳሌ, - ተመሳሳይ. በ"ብሪስኬት" ውስጥ "b" እና "a" እና "c" በ"ህመም" ይዛመዳል።
[^xyz]በስብስቡ ውስጥ ከተገለጹት በስተቀር ማንኛውም ቁምፊ። ስፓንንም መግለጽ ይችላሉ። ለምሳሌ [^abc] ከ [^a-c] ጋር ተመሳሳይ ነው። "r" በ "brisket" እና "h" በ "ቾፕ" ውስጥ ያገኛል።
[\b]የኋለኛ ክፍል ቁምፊን ያገኛል። (ከ \b ጋር መምታታት የለበትም።)
\bእንደ ጠፈር ያለ (ላቲን) የቃላት ድንበር ያገኛል። (ከ [\b] ጋር መምታታት የለበትም)። ለምሳሌ, /\ bn\w / በ "እኩለ ቀን" ውስጥ "አይ" ይዛመዳል; /\wy\b/ በ "ምናልባትም ትላንትና" ውስጥ ከ"ly" ጋር ይዛመዳል።
\Bየቃል ድንበር አያመለክትም። ለምሳሌ፣ /\w\Bn/ በ"ቀትር" ላይ "በቀን" ይዛመዳል፣ እና /y\B
\cXX ከ A ወደ Z ፊደል ባለበት። በሕብረቁምፊ ውስጥ የቁጥጥር ቁምፊን ያሳያል። ለምሳሌ, /\ cM/ የ Ctrl-M ቁምፊን ይወክላል.
\መከማንኛውም ፊደል ቁጥር ያገኛል (የእኛ ዩኒኮድ ነው)። መደበኛ ቁጥሮችን ለማግኘት ይጠቀሙ። ለምሳሌ /\d/ ወይም // በ"B2 is the suite number" ውስጥ ካለው "2" ጋር ይዛመዳል።
\መቁጥራዊ ያልሆነ ገጸ-ባህሪን ያገኛል (ሁሉም ፊደሎች)። [^0-9] ከመደበኛ ቁጥሮች ጋር እኩል ነው። ለምሳሌ /\D/ ወይም /[^0-9]/ በ"B2 is the suite number" ውስጥ ካለው "B" ጋር ይዛመዳል።
\sቦታ፣ ትር፣ አዲስ መስመር እና ሌሎች የዩኒኮድ የነጭ ቦታ ቁምፊዎችን ጨምሮ ከማንኛውም የነጭ ቦታ ቁምፊ ​​ጋር ይዛመዳል። ለምሳሌ፣ /\s\w*/ በ"foo bar" ውስጥ ከ"ባር" ጋር ይዛመዳል።
\Sከነጭ ቦታ በስተቀር ማንኛውንም ቁምፊ ያገኛል። ለምሳሌ፡/\S\w*/ በ"foo bar" ውስጥ ከ"fo" ጋር ይዛመዳል።
\vአቀባዊ የትር ቁምፊ።
\wፊደሎችን፣ ቁጥሮችን እና ግርጌዎችን ጨምሮ ማንኛውንም ቃል (የላቲን ፊደል) ቁምፊን ያገኛል። አቻ። ለምሳሌ፣ /\w/ በ"ፖም"፣ "5" በ"$5.28" እና "3" በ"3D" ይዛመዳል።
\ወማንኛውም (ላቲን) ያልሆነ የቃል ባህሪ ያገኛል። ከ [^A-Za-z0-9_] ጋር እኩል ነው። ለምሳሌ፣ /\W/ እና /[^$A-Za-z0-9_]/ በ"50%" ውስጥ ከ"%" ጋር እኩል ይሆናሉ።

በጃቫስክሪፕት ውስጥ ከመደበኛ መግለጫዎች ጋር መሥራት

በጃቫስክሪፕት ውስጥ ከመደበኛ አገላለጾች ጋር ​​አብሮ መሥራት በ String ክፍል ዘዴዎች ይተገበራል።

exec (regexp) - ሁሉንም ግጥሚያዎች (በተለመደው ስርዓተ-ጥለት ውስጥ ያሉ ግቤቶችን) በሕብረቁምፊ ውስጥ ያገኛል። ድርድር ይመልሳል (ተዛማጅ ካለ) እና የ regexp ንብረቱን ያሻሽላል፣ ወይም ምንም ካልተገኘ ባዶ ይሆናል። በ g መቀየሪያ - ይህ ተግባር በተጠራ ቁጥር ቀዳሚው ከተገኘ በኋላ የሚቀጥለውን ግጥሚያ ይመልሳል - ይህ የመጨረሻውን ፍለጋ ማካካሻ መረጃ ጠቋሚን በመጠበቅ ይተገበራል።

ግጥሚያ(regexp) - ስርዓተ-ጥለት በመጠቀም የሕብረቁምፊውን ክፍል ያግኙ። g መቀየሪያው ከተገለጸ፣ ግጥሚያ() የሁሉንም ግጥሚያዎች ወይም ባዶ ድርድር ይመልሳል (ከባዶ ድርድር ይልቅ)። ያለ g መቀየሪያ, ይህ ተግባር እንደ exec ();

test(regexp) - ተግባሩ ስርዓተ-ጥለትን ለማዛመድ ሕብረቁምፊን ይፈትሻል። ግጥሚያ ካለ እውነት፣ እና ተዛማጅ ከሌለ ሐሰት ይመለሳል።

split(regexp) - የተጠራበትን ሕብረቁምፊ ወደ ንዑስ ሕብረቁምፊዎች ድርድር ይከፍላል፣ ክርክሩን እንደ ገዳቢ ይጠቀማል።

ተካ (regexp, mix) - ዘዴው በአብነት (መደበኛ አገላለጽ) መሰረት የተሻሻለ ሕብረቁምፊን ይመልሳል. የ regexp የመጀመሪያው መለኪያ ከመደበኛ አገላለጽ ይልቅ ሕብረቁምፊ ሊሆን ይችላል። ያለ g ማሻሻያ, በመስመሩ ውስጥ ያለው ዘዴ የመጀመሪያውን ክስተት ብቻ ይተካዋል; ከመቀየሪያው g ጋር - ዓለም አቀፋዊ መተካት ይከሰታል, ማለትም. በተሰጠው መስመር ውስጥ ያሉ ሁሉም ክስተቶች ተለውጠዋል.

ድብልቅ - መተኪያ አብነት ፣ የሕብረቁምፊውን ፣ የመተኪያ አብነት ፣ ተግባር (የተግባር ስም) እሴቶችን መቀበል ይችላል።

በተለዋዋጭ ሕብረቁምፊ ውስጥ ልዩ ቁምፊዎች

በተግባሩ መተካት

አንድ ተግባር እንደ ሁለተኛው መለኪያ ከገለጹ በእያንዳንዱ ግጥሚያ ላይ ይፈጸማል. አንድ ተግባር በተለዋዋጭ ሁኔታ የመተካት ሕብረቁምፊን መፍጠር እና መመለስ ይችላል። የተግባሩ የመጀመሪያ ግቤት የተገኘው ንዑስ ሕብረቁምፊ ነው። የሚተካው የመጀመሪያው ነጋሪ እሴት የ RegExp ነገር ከሆነ፣ የሚቀጥሉት n መለኪያዎች የጎጆ ቅንፍ ግጥሚያዎችን ይይዛሉ። የመጨረሻዎቹ ሁለት መመዘኛዎች ግጥሚያው በተከሰተበት መስመር ውስጥ ያለው ቦታ እና መስመሩ ራሱ ነው።

መቀየሪያዎች

ከተቀያሪ (-) ቀጥሎ የተቀመጠው የመቀነስ ምልክት (ከዩ በስተቀር) ተቃውሞውን ይፈጥራል።

ልዩ ቁምፊዎችአናሎግ
() መግለጫ
ንኡስ ንድፍ, የተከማቸ አገላለጽ
የዱር ምልክት (ሀ, ለ)
| የክስተቶች ብዛት ከ "a" እስከ "b"
\ አመክንዮአዊ "ወይም", በነጠላ-ቁምፊ አማራጮች አጠቃቀም ሁኔታ
. ልዩ ባህሪን ማምለጥ
ከመስመር ምግብ በስተቀር ማንኛውም ቁምፊ \መ
የአስርዮሽ አሃዝ\መ[^\d]
ከአስርዮሽ አሃዝ በስተቀር ማንኛውም ቁምፊ \f
መጨረሻ (ገጽ መግቻ) \n
የመስመር ምግብ \pL
የዩ ማሻሻያውን ሲጠቀሙ በ UTF-8 ኢንኮዲንግ ውስጥ ያለው ፊደል \r
የመጓጓዣ መመለስ\s[\t\v\r\n\f]
የጠፈር ባህሪ\S[^\s]
ብልጭ ድርግም ከሚለው በስተቀር ማንኛውም ቁምፊ \t
ሠንጠረዥ \w
ማንኛውም ቁጥር, ፊደል ወይም ከስር\ ወ[^\w]
ከቁጥር፣ ከደብዳቤ ወይም ከስር ምልክት ውጪ ያለ ማንኛውም ቁምፊ \v

አቀባዊ ትር

በቁምፊ ክፍል ውስጥ ያሉ ልዩ ቁምፊዎች

በሕብረቁምፊ ውስጥ አቀማመጥመዛግብትአናሎግ
^ ለምሳሌ^አአአ አአአአ
$ የመስመር መጀመሪያአንድ$ ^አ አአ አአ
የመስመር መጨረሻ\A^አ\አአ
አአ አአአአ
አአ አአአአ
የጽሑፉ መጀመሪያ\zአ\z
አንድ$ ^አ
አአ አአአአ
የጽሑፍ መጨረሻ\b
ሀ\b
\ba ^አአአ ^አ
^አአአ ^አአአ
አአ
የቃላት ወሰን, መግለጫ: የቀደመው ቁምፊ የቃል ነው, ግን ቀጣዩ አይደለም, ወይም በተቃራኒው\B\ ባ\ ቢ ^አ^አ^አአ.አ
የቃላት ወሰን የለም።\ጂ\ ጋአአአአአአ
ቀደም ሲል የተሳካ ፍለጋ, ፍለጋው በ 4 ኛ ደረጃ ላይ ቆሟል - የት ሀ

በፒዲኤፍ፣ ፒኤንጂ አውርድ።

በመደበኛ መግለጫዎች ውስጥ ያሉ መልህቆች የአንድን ነገር መጀመሪያ ወይም መጨረሻ ያመለክታሉ። ለምሳሌ, መስመሮች ወይም ቃላት. እነሱ በተወሰኑ ምልክቶች ይወከላሉ. ለምሳሌ፣ ከቁጥር የሚጀምር ሕብረቁምፊ ጋር የሚዛመድ ስርዓተ-ጥለት ይህን ይመስላል።

እዚህ ^ ቁምፊው የመስመሩን መጀመሪያ ያመለክታል. ያለሱ፣ ንድፉ አሃዝ ካለው ከማንኛውም ሕብረቁምፊ ጋር ይዛመዳል።

የቁምፊ ክፍሎች

በመደበኛ አገላለጾች ውስጥ ያሉ የቁምፊ ክፍሎች በአንድ ጊዜ የተወሰኑ የቁምፊዎች ስብስብ ይዛመዳሉ። ለምሳሌ \d ከ0 እስከ 9 አካታች የሆነ ቁጥር፣ \w ፊደሎችን እና ቁጥሮችን ይዛመዳል፣ እና \W ከደብዳቤዎች እና ቁጥሮች በስተቀር ሁሉንም ቁምፊዎች ይዛመዳል። ፊደሎችን፣ ቁጥሮችን እና ቦታን የሚለይ ስርዓተ-ጥለት ይህን ይመስላል።

POSIX

POSIX ከመደበኛ አገላለጽ ቤተሰብ ጋር በአንፃራዊነት አዲስ መደመር ነው። ሃሳቡ፣ ልክ እንደ ገፀ ባህሪ ክፍሎች፣ የተወሰኑ የገጸ-ባህሪያትን ቡድን የሚወክሉ አቋራጮችን መጠቀም ነው።

መግለጫዎች

መጀመሪያ ላይ ሁሉም ሰው ማለት ይቻላል ማረጋገጫዎችን የመረዳት ችግር አለበት፣ ነገር ግን የበለጠ ሲተዋወቁ፣ እራስዎን ብዙ ጊዜ ሲጠቀሙባቸው ያገኛሉ። ማረጋገጫዎች፣ “በዚህ ሰነድ ውስጥ “q” የሚለውን ፊደል የሚያካትተውን እያንዳንዱን ቃል ማግኘት እፈልጋለሁ እና በ“ዌርቲ” ያልተከተለውን የማለት መንገድ ያቀርባሉ።

[^\s]*q(?!werty)[^\s]*

ከላይ ያለው ኮድ የሚጀምረው ከጠፈር ([^\s]*) ሌላ ቁምፊዎችን በመፈለግ ሲሆን ከዚያም q . ተንታኙ ወደ ፊት የሚመለከት ማረጋገጫ ይደርሳል። ይህ በራስ-ሰር ቀዳሚውን አካል (ቁምፊ፣ ቡድን ወይም የቁምፊ ክፍል) ሁኔታዊ ያደርገዋል - ከስርአቱ ጋር የሚዛመደው መግለጫው እውነት ከሆነ ብቻ ነው። በእኛ ሁኔታ, መግለጫው አሉታዊ ነው (?!) ማለትም በውስጡ የሚፈለገው ነገር ካልተገኘ እውነት ይሆናል.

ስለዚህ ተንታኙ የሚቀጥሉትን ጥቂት ቁምፊዎች ከታቀደው ስርዓተ-ጥለት (ዌርቲ) አንጻር ይፈትሻል። እነሱ ከተገኙ, ከዚያም መግለጫው ውሸት ነው, ይህም ማለት ገጸ ባህሪው q " ችላ ይባላል ", ማለትም, ከስርዓተ-ጥለት ጋር አይዛመድም. ዌርቲ ካልተገኘ, መግለጫው እውነት ነው, እና ሁሉም ነገር በ q. ከዚያ ፍለጋው ከጠፈር ([^\s]* በስተቀር ሌሎች ቁምፊዎችን መፈለግ ይቀጥላል)።

ኳንትፊየሮች

Quantifiers በተከታታይ ብዙ ጊዜ መደገም ያለበትን የስርዓተ-ጥለት ክፍል እንዲገልጹ ያስችሉዎታል። ለምሳሌ፣ ሰነዱ ከ10 እስከ 20 (ያካተተ) ፊደሎች "a" ያለው ሕብረቁምፊ እንዳለው ለማወቅ ከፈለጉ ይህን ስርዓተ-ጥለት መጠቀም ይችላሉ።

አ (10፣20)

በነባሪ, ኳንቲፊየሮች "ስግብግብ" ናቸው. ስለዚህ፣ ኳንቲፋየር +፣ ትርጉሙ “አንድ ወይም ብዙ ጊዜ” ከሚችለው ከፍተኛ እሴት ጋር ይዛመዳል። አንዳንድ ጊዜ ይህ ችግር ይፈጥራል ከዚያም ልዩ ማሻሻያ በመጠቀም መጎምጀትን እንዲያቆም ("ሰነፍ" ይሁኑ) ለቁጥጥር ባለሙያው መንገር ይችላሉ። ይህን ኮድ ይመልከቱ፡-

".*"

ይህ ስርዓተ-ጥለት በድርብ ጥቅሶች ውስጥ ከተዘጋው ጽሑፍ ጋር ይዛመዳል። ሆኖም፣ የእርስዎ ምንጭ መስመር እንደዚህ ያለ ነገር ሊሆን ይችላል፡-

ሰላም አለም

ከላይ ያለው አብነት የሚከተለውን ንዑስ ሕብረቁምፊ በዚህ መስመር ውስጥ ያገኛል፡

"helloworld.htm" title="Hello World" !}

በጣም ስግብግብ ሆኖ ተገኘ፣ የሚችለውን ትልቁን ጽሁፍ ያዘ።

".*?"

ይህ ስርዓተ-ጥለት በድርብ ጥቅሶች ውስጥ ከተካተቱት ማንኛቸውም ቁምፊዎች ጋር ይዛመዳል። ግን ሰነፍ እትም (ማሻሻያውን አስተውል?) በተቻለ መጠን ትንሹን ክስተት ይፈልጋል፣ እና ስለዚህ እያንዳንዱን ድርብ የተጠቀሰ ንዑስ ሕብረቁምፊ በተናጠል ያገኛል፡-

"helloworld.htm" "ሄሎ አለም"

በመደበኛ መግለጫዎች ማምለጥ

መደበኛ አገላለጾች የተለያዩ የስርዓተ-ጥለት ክፍሎችን ለመወከል የተወሰኑ ቁምፊዎችን ይጠቀማሉ። ነገር ግን፣ ልክ እንደ መደበኛ ገፀ-ባህሪያት ከነዚህ ቁምፊዎች ውስጥ አንዱን ለማግኘት ከፈለጉ ችግር ይፈጠራል። ነጥብ፣ ለምሳሌ፣ በመደበኛ አገላለጽ ውስጥ “ከመስመር መቋረጥ በስተቀር ማንኛውም ገጸ ባህሪ” ማለት ነው። በሕብረቁምፊ ውስጥ ነጥብ ማግኘት ከፈለጉ "" ብቻ መጠቀም አይችሉም። » እንደ አብነት - ይህ ማንኛውንም ነገር ወደ መፈለግ ይመራል ። ስለዚህ, ይህ ነጥብ እንደ መደበኛ ነጥብ እንጂ "ማንኛውም ገጸ ባህሪ" እንዳልሆነ ለተንታኙ መንገር ያስፈልግዎታል. ይህ የማምለጫ ምልክት በመጠቀም ይከናወናል.

እንደ ነጥብ ያለ ገጸ ባህሪ የሚቀድመው የማምለጫ ገፀ ባህሪ ተንታኙ ተግባሩን ችላ እንዲል እና እንደ መደበኛ ባህሪ እንዲይዝ ያደርገዋል። በአብዛኛዎቹ አብነቶች እና ቋንቋዎች ውስጥ እንደዚህ አይነት ማምለጥ የሚያስፈልጋቸው በርካታ ቁምፊዎች አሉ። በማጭበርበር ሉህ ታችኛው ቀኝ ጥግ ላይ ("ሜታ ምልክቶች") ማግኘት ትችላለህ።

ነጥብ ለማግኘት ዘይቤው የሚከተለው ነው-

\.

በመደበኛ አገላለጾች ውስጥ ያሉ ሌሎች ልዩ ቁምፊዎች በጽሑፍ ውስጥ ካሉ ያልተለመዱ አካላት ጋር ይዛመዳሉ። የመስመር መግቻዎች እና ትሮች ለምሳሌ በቁልፍ ሰሌዳው ላይ ሊተየቡ ይችላሉ ነገር ግን የፕሮግራም ቋንቋዎችን ግራ ሊያጋቡ ይችላሉ። የማምለጫ ቁምፊ እዚህ ላይ ተንታኙ ቀጣዩን ቁምፊ ከመደበኛ ፊደል ወይም ቁጥር ይልቅ እንደ ልዩ ቁምፊ እንዲመለከት ለመንገር ጥቅም ላይ ይውላል።

በመደበኛ መግለጫዎች ውስጥ ልዩ የማምለጫ ቁምፊዎች

የሕብረቁምፊ መተካት

የሕብረቁምፊ መተካት በሚቀጥለው አንቀጽ "ቡድኖች እና ክልሎች" በዝርዝር ተገልጿል ነገር ግን "ተለዋዋጭ" ቡድኖች መኖር እዚህ መጠቀስ አለበት. እነዚህ በመተካት ጊዜ ችላ የተባሉ ቡድኖች ናቸው, ይህም "ወይም" ሁኔታን በስርዓተ-ጥለት ለመጠቀም ከፈለጉ በጣም ጠቃሚ ነው, ነገር ግን ቡድኑ በመተካቱ ውስጥ እንዲሳተፍ አይፈልጉም.

ቡድኖች እና ክልሎች

ቡድኖች እና ክልሎች በጣም በጣም ጠቃሚ ናቸው። በክልሎች መጀመር ቀላል ሊሆን ይችላል። ተስማሚ ቁምፊዎችን ስብስብ እንዲገልጹ ያስችሉዎታል. ለምሳሌ፣ ሕብረቁምፊው ሄክሳዴሲማል አሃዞችን (ከ0 እስከ 9 እና ከ A እስከ F) መያዙን ለማረጋገጥ ይህን የመሰለ ክልል መጠቀም ይችላሉ።

ተቃራኒውን ለመፈተሽ፣ በእኛ ሁኔታ ከ0 እስከ 9 ካሉ ቁጥሮች እና ከ A እስከ F ካሉ ፊደሎች በስተቀር ለማንኛውም ቁምፊ የሚስማማውን አሉታዊ ክልል ይጠቀሙ።

[^A-Fa-f0-9]

ቡድኖች ብዙውን ጊዜ ጥቅም ላይ የሚውሉት "ወይም" ሁኔታ በስርዓተ-ጥለት ሲያስፈልግ ነው; የአብነት ክፍልን ከሌላው ክፍል ማጣቀስ ሲያስፈልግ; እና እንዲሁም ገመዶችን ሲተኩ.

"ወይም" መጠቀም በጣም ቀላል ነው፡ የሚከተለው ስርዓተ ጥለት "ab" ወይም "bc" ይመስላል፡

በመደበኛ አገላለጽ ከቀደምት ቡድኖች ውስጥ አንዱን ማመልከት አስፈላጊ ከሆነ \n ን መጠቀም አለብዎት, በምትኩ የሚፈለገውን ቡድን ቁጥር ይተኩ. ከ "aaa" ወይም "bbb" ፊደሎች ጋር የሚዛመድ ስርዓተ-ጥለት ሊፈልጉ ይችላሉ ከዚያም በቁጥር እና ከዚያም ተመሳሳይ ሶስት ፊደላት. ይህ ስርዓተ-ጥለት የሚተገበረው ቡድኖችን በመጠቀም ነው፡-

(aa|bbb)+\1

የስርአቱ የመጀመሪያ ክፍል በቡድን የተገኙትን ፊደሎች በማጣመር "aaa" ወይም "bbb" ይመስላል። ከዚህ በኋላ አንድ ወይም ከዚያ በላይ አሃዞች (+) ፍለጋ እና በመጨረሻም \1. የስርዓተ-ጥለት የመጨረሻው ክፍል የመጀመሪያውን ቡድን ይጠቅሳል እና ተመሳሳይ ነገርን ይፈልጋል. በስርዓተ-ጥለት የመጀመሪያ ክፍል አስቀድሞ ከተገኘው ጽሑፍ ጋር ተዛማጅ ይፈልጋል እንጂ ከእሱ ጋር የሚዛመድ አይደለም። ስለዚህ "aaa123bbb" ከላይ ያለውን ንድፍ አያረካውም ምክንያቱም \1 ከቁጥሩ በኋላ "aaa" ይፈልጋል።

በመደበኛ መግለጫዎች ውስጥ በጣም ጠቃሚ ከሆኑ መሳሪያዎች አንዱ የሕብረቁምፊ መተካት ነው። ጽሑፍ በምትተካበት ጊዜ፣ የተገኘውን ቡድን $n በመጠቀም ማጣቀስ ትችላለህ። ሁሉንም "ምኞት" የሚሉትን ቃላት በደማቅ ጽሁፍ ውስጥ ማጉላት ይፈልጋሉ እንበል። ይህንን ለማድረግ መደበኛ አገላለጽ የመተካት ተግባርን መጠቀም አለብዎት፣ይህም ይህን ይመስላል።

መተካት (ስርዓተ-ጥለት ፣ ምትክ ፣ ርዕሰ ጉዳይ)

የመጀመሪያው ልኬት እንደዚህ ያለ ነገር ይሆናል (ለዚህ ተግባር ጥቂት ተጨማሪ ቁምፊዎች ሊፈልጉ ይችላሉ)

([^A-Za-z0-9])(ምኞት)([^A-ዛ-ዝ0-9])

ፊደሎች ወይም ቁጥሮች እስካልሆኑ ድረስ "ምኞት" የሚለው ቃል ማንኛውንም ክስተት ከቀደምት እና ከሚቀጥሉት ቁምፊዎች ጋር ያገኛል። ከዚያ የእርስዎ ምትክ እንደዚህ ሊሆን ይችላል፡-

$1$2$3

ንድፉን በመጠቀም የተገኘውን ሕብረቁምፊ በሙሉ ይተካል። በተገኘ የመጀመሪያው ቁምፊ መተካት እንጀምራለን (ይህ ፊደል ወይም ቁጥር አይደለም), $ 1 ምልክት ያድርጉ. ያለዚህ ፣ ይህንን ገጸ ባህሪ ከጽሑፉ ላይ እናስወግደዋለን። ተተኪው (3 ዶላር) መጨረሻ ላይ ተመሳሳይ ነው. በመሃል ላይ ለደማቅ የኤችቲኤምኤል መለያ አክለናል (በእርግጥ CSS መጠቀም ይችላሉ ወይም አብነት ($2) በመጠቀም የተገኘውን ሁለተኛ ቡድን መመደብ።

የአብነት ማስተካከያዎች

የአብነት ማስተካከያዎች በተለያዩ ቋንቋዎች ጥቅም ላይ ይውላሉ፣ በተለይም ፐርል። ተንታኙ እንዴት እንደሚሰራ እንዲቀይሩ ያስችሉዎታል። ለምሳሌ፣ i modifier ተንታኙ ጉዳዮችን ችላ እንዲላቸው ያደርጋል።

በፐርል ውስጥ ያሉ መደበኛ አገላለጾች በጅማሬ እና በመጨረሻው ተመሳሳይ ገጸ-ባህሪያት የተከበቡ ናቸው. ይህ ማንኛውም ቁምፊ ሊሆን ይችላል (ብዙውን ጊዜ "/" ጥቅም ላይ ይውላል) እና ይህን ይመስላል:

/ስርአት/

ማስተካከያዎች በዚህ መስመር መጨረሻ ላይ እንደዚህ ተጨምረዋል፡

/ስርዓተ-ጥለት/i

ሜታ ቁምፊዎች

በመጨረሻም የሠንጠረዡ የመጨረሻ ክፍል ሜታ ቁምፊዎችን ይዟል። እነዚህ በመደበኛ አገላለጾች ውስጥ ልዩ ትርጉም ያላቸው ቁምፊዎች ናቸው. ስለዚህ ከመካከላቸው አንዱን እንደ መደበኛ ባህሪ ለመጠቀም ከፈለጉ ከዚያ ማምለጥ ያስፈልገዋል. በጽሁፉ ውስጥ ቅንፍ መኖሩን ለማረጋገጥ የሚከተለውን ስርዓተ-ጥለት ይጠቀሙ፡-

የማጭበርበር ሉህ የማንኛውም ቋንቋን ልዩ ሁኔታ ከግምት ውስጥ ሳያስገባ ለመደበኛ አገላለጽ ዘይቤዎች አጠቃላይ መመሪያ ነው። በአንድ የታተመ የ A4 መጠን ላይ በጠረጴዛ መልክ ቀርቧል. በዴቭ ቻይልድ በተፃፈው የማጭበርበር ወረቀት ላይ በመመስረት በCreative Commons ፍቃድ የተፈጠረ። በፒዲኤፍ፣ ፒኤንጂ አውርድ።


JavaScript regexp በሕብረቁምፊዎች ውስጥ ያሉትን የቁምፊዎች ቅደም ተከተል ለማዛመድ የሚያገለግል የነገር አይነት ነው።

የመጀመሪያውን መደበኛ አገላለጽ መፍጠር

መደበኛ አገላለጽ ለመፍጠር ሁለት መንገዶች አሉ-የተለመደ አገላለጽ ቃል በቃል ወይም መደበኛ የቃላት መገንቢያ በመጠቀም። እያንዳንዳቸው አንድ ዓይነት ንድፍ ይወክላሉ-ምልክቱ " "፣ በመቀጠል" "ከዚያም ምልክቱ" ».

// የመደበኛ አገላለጽ ቃል በቃል በሸርተቴ ተዘግቷል (/) var option1 = /cat/; // መደበኛ አገላለጽ ገንቢ var option2 = አዲስ RegExp ("ድመት");

እንደአጠቃላይ, መደበኛው አገላለጽ ቋሚ ይሆናል, ማለትም አይለወጥም, መደበኛውን አገላለጽ በትክክል መጠቀም የተሻለ ነው. ከተለወጠ ወይም በሌሎች ተለዋዋጮች ላይ የሚመረኮዝ ከሆነ ከግንባታ ጋር ዘዴን መጠቀም የተሻለ ነው.

RegExp.prototype.test () ዘዴ

የዘወትር አገላለጾች ነገሮች ናቸው ብዬ ስናገር አስታውስ? ይህም ማለት በርካታ ዘዴዎች አሏቸው ማለት ነው. በጣም ቀላሉ ዘዴ ጃቫ ስክሪፕት ነው። regexp ሙከራየቦሊያንን እሴት የሚመልስ፡-

እውነት፡ ሕብረቁምፊው መደበኛ የቃላት አገላለጽ ንድፍ ይዟል።

ውሸት፡ ምንም ተዛማጅ አልተገኘም።

console.log (/ cat/.test ("ድመቷ meow ይላል")); // true console.log (/cat/.test ("ውሻው ቅርፊት ይላል")); // ትክክል አይደለም።

የቋሚ አገላለጽ መሠረታዊ ነገሮች የማጭበርበር ወረቀት

የመደበኛ መግለጫዎች ምስጢር የተለመዱ ገጸ-ባህሪያትን እና ቡድኖችን ማስታወስ ነው. ከታች ባለው ቻርት ላይ ጥቂት ሰዓታትን እንድታሳልፉ እና ከዚያ ተመልሰው መጥተው የበለጠ እንዲያጠኑ አጥብቄ እመክራለሁ።

ምልክቶች

  • .
  • - (ነጥብ) ከመስመር መግቻዎች በስተቀር ከማንኛውም ነጠላ ቁምፊ ጋር ይዛመዳል;
  • *  - 0 ወይም ከዚያ በላይ ጊዜ የሚደጋገመው ከቀደመው አገላለጽ ጋር ይዛመዳል።
  • +  –  ከቀደመው አገላለጽ 1 ወይም ከዚያ በላይ ከተደጋገመ ጋር ይዛመዳል። ?);
  • - የቀድሞው አገላለጽ አማራጭ ነው (
  • ግጥሚያዎች 0 ወይም 1 ጊዜ

^ - ከመስመሩ መጀመሪያ ጋር ይዛመዳል;

  • $ - ከመስመሩ መጨረሻ ጋር ይዛመዳል.የባህርይ ቡድኖች
  • - ከማንኛውም ነጠላ የቁጥር ቁምፊ ጋር ይዛመዳል።
  • [- ከማንኛውም ቁምፊ (ቁጥር ፣ ፊደል ወይም ከስር) ጋር ይዛመዳል። .
  • [XYZ ]  - የቁምፊዎች ስብስብ። በቅንፍ ውስጥ ከተጠቀሰው ማንኛውም ነጠላ ቁምፊ ጋር ይዛመዳል። እንዲሁም የቁምፊ ክልሎችን መግለጽ ይችላሉ፣ ለምሳሌ፡-
  • [^XYZ]+  - አንድ ወይም ብዙ ጊዜ ከተደጋገመ ገጸ ባህሪይ ጋር ይዛመዳል።

ሀ-ዘ]

  - በቁምፊ ስብስብ ውስጥ “^” እንደ አሉታዊ ምልክት ጥቅም ላይ ይውላል። በዚህ ምሳሌ፣ ንድፉ አቢይ ሆሄ ካልሆነ ከማንኛውም ነገር ጋር ይዛመዳል። ባንዲራዎች፡በJavaScript regexp ውስጥ አምስት አማራጭ ባንዲራዎች አሉ። እነሱ በተናጥል ወይም በአንድ ላይ ጥቅም ላይ ሊውሉ ይችላሉ, እና ከመዘጋቱ በኋላ ይቀመጣሉ. ለምሳሌ፡- /[

አ -ዜድ]/ግ. እዚህ ሁለት ባንዲራዎችን ብቻ እሰጣለሁ.

ሰ- ዓለም አቀፍ ፍለጋ.

እኔ  

(- ለጉዳይ የማይታወቅ ፍለጋ።ተጨማሪ ንድፎች

(?:- ለጉዳይ የማይታወቅ ፍለጋ። x)

  -  ቅንፍ በመያዝ ላይ። ይህ አገላለጽ ከ x ጋር ይዛመዳል እና ያንን ግጥሚያ ያስታውሳል ስለዚህ በኋላ ሊጠቀሙበት ይችላሉ።

  - የማይያዙ ቅንፎች። አገላለጹ ከ x ጋር ይዛመዳል ግን ግጥሚያውን አያስታውስም።

የሚዛመደው x በ y ከተከተለ ብቻ ነው።

የተማርነውን ነገር እንፈትሽ

በመጀመሪያ, ከላይ ያሉትን ሁሉንም እንፈትሽ. ለማንኛውም ቁጥሮች ሕብረቁምፊን ማረጋገጥ እንፈልጋለን እንበል። ይህንን ለማድረግ የ "d" ግንባታን መጠቀም ይችላሉ.

console.log (/dd-dd/.test ("12-34")); //true console.log (/dd-dd/.test("1234")); // የተሳሳተ

በጃቫ ስክሪፕት regexp በመስመር ላይ ከ "-" ምልክት በፊት እና በኋላ ቁጥሮች እንዴት እንደሚመጡ ግድ ከሌለዎት የ"d" ስርዓተ-ጥለት አንድ ወይም ብዙ ጊዜ እንደሚከሰት ለማሳየት የ"+" ምልክትን መጠቀም ይችላሉ።

console.log (/ d+-d+/. ሙከራ ("12-34")); // እውነተኛ ኮንሶል.ሎግ(/d+-d+/.test("1-234")); // እውነተኛ ኮንሶል.ሎግ(/d+-d+/.test("-34")); // ትክክል አይደለም።

ለቀላልነት፣ ለቡድን መግለጫዎች ቅንፍ መጠቀም ይችላሉ። አንድ ድመት ማዋይ አለን እንበል እና ስርዓተ-ጥለትን ማረጋገጥ እንፈልጋለን" meow"(ሜው):

console.log (/ እኔ+(ow)+w/.ፈተና("meeeeowowoww")); // ቀኝ

አሁን እንወቅበት።

m => ከአንድ ፊደል 'm' ጋር ይዛመዳል;

e + => "ሠ" ከሚለው ፊደል አንድ ወይም ብዙ ጊዜ ጋር ይዛመዳል፤

(ow) + => ከ"ow" ፊደሎች አንድ ወይም ብዙ ጊዜ ጋር ይዛመዳል፤

w => 'w' ከሚለው ፊደል ጋር ይዛመዳል;

‘m’ + ‘eeee’ + ‘wowow’ + ‘w’.

እንደ "+" ያሉ ኦፕሬተሮች ከቅንፍ በኋላ ወዲያውኑ ጥቅም ላይ ሲውሉ፣ በቅንፍ ውስጥ ያለውን አጠቃላይ ይዘት ይነካሉ።

ኦፕሬተር "? " የቀደመው ቁምፊ አማራጭ መሆኑን ያመለክታል. ከታች እንደምታዩት ሁለቱም የፈተና ጉዳዮች እውነት ይመለሳሉ ምክንያቱም የ"s" ቁምፊዎች እንደ አማራጭ ምልክት ተደርጎባቸዋል።

console.log (/ ድመቶች? ይላል?/i.test ("ድመቷ meow ይላል")); //true console.log (/ ድመቶች? ይላል?/i.test ("ድመቶቹ ሜው ይላሉ")); //ቀኝ

የተንቆጠቆጡ ገጸ-ባህሪን ለማግኘት ከፈለጉ, የኋላ መንሸራተትን በመጠቀም ማምለጥ ያስፈልግዎታል. እንደ የጥያቄ ምልክት ላሉ ሌሎች ገጸ-ባህሪያት ተመሳሳይ ነው. እንዴት እነሱን መፈለግ እንደሚቻል የJavaScript regexp ምሳሌ ይኸውና፡

var slashSearch = ///; var questionSearch = /?/;

  • $ - ከመስመሩ መጨረሻ ጋር ይዛመዳል.ተመሳሳይ ነው: እያንዳንዱ ግንባታ ከዲጂታል ምልክት ጋር ይዛመዳል.
  • - ይህ ከ ጋር ተመሳሳይ ነው አ —ዛ —ዝ 0-9_]ሁለቱም አገላለጾች ከየትኛውም ነጠላ ፊደል ቁምፊ ወይም ከስር ምልክት ጋር ይዛመዳሉ።

ምሳሌ፡ ክፍተቶችን ወደ ግመል ሕብረቁምፊዎች ማከል

በዚህ ምሳሌ፣ በግመል የአጻጻፍ ስልት በጣም ደክሞናል እና በቃላት መካከል ክፍተቶችን የምንጨምርበት መንገድ እንፈልጋለን። አንድ ምሳሌ ይኸውና፡-

removeCc ("camelcase") // => "የግመል መያዣ" መመለስ አለበት.

መደበኛ አገላለጽ በመጠቀም ቀላል መፍትሄ አለ. በመጀመሪያ, ሁሉንም አቢይ ሆሄያት ማግኘት አለብን. ይህ የቁምፊ ቅንብር ፍለጋን እና አለምአቀፋዊ መቀየሪያን በመጠቀም ሊከናወን ይችላል።

ይህ በ "camelcase" ውስጥ ካለው "C" ጋር ይዛመዳል

አሁን ከ "C" በፊት ቦታን እንዴት መጨመር ይቻላል?

የሚማርኩ ቅንፎችን መጠቀም አለብን! ግጥሚያ እንድታገኙ ያስችሉዎታል እና በኋላ ለመጠቀም ያስታውሱታል! ያገኙትን አቢይ ሆሄ ለማስታወስ የሚይዙ ቅንፎችን ይጠቀሙ፡-

የተቀረጸውን እሴት በኋላ ላይ እንደዚህ ማግኘት ትችላለህ፡-

የተያዘውን ዋጋ ለማግኘት ከላይ $1 እንጠቀማለን። በነገራችን ላይ፣ ሁለት የቅንፍ ማንሻ ስብስቦች ካሉን፣ የተያዙትን እሴቶች ለማመልከት 1 እና 2 ዶላር እንጠቀማለን፣ እና በተመሳሳይ መልኩ ለበለጠ ቀረጻ ቅንፍ።

ቅንፍ መጠቀም ካስፈለገህ ግን ያንን እሴት መያዝ ካላስፈለገህ የማይይዙ ቅንፎችን መጠቀም ትችላለህ፡(?: x)። በዚህ አጋጣሚ፣ ከ x ጋር የሚዛመድ ተገኝቷል፣ ግን አይታወስም።

ወደ አሁኑ ተግባር እንመለስ። ቅንፍ ማንሳትን እንዴት ተግባራዊ እናደርጋለን? የጃቫስክሪፕት regexp መተኪያ ዘዴን በመጠቀም! እንደ ሁለተኛው መከራከሪያ "$1" እናልፋለን. እዚህ የጥቅስ ምልክቶችን መጠቀም አስፈላጊ ነው.

ተግባር removeCc(str)( str.replace(/()/g፣ "$1" ይመለሱ);)

ኮዱን እንደገና እንየው። አቢይ ሆሄን እንይዛለን ከዚያም በተመሳሳይ ፊደል እንተካለን. በጥቅሶቹ ውስጥ, በተለዋዋጭ $1 የተከተለ ቦታ አስገባ. በውጤቱም, ከእያንዳንዱ ትልቅ ፊደል በኋላ ቦታ እናገኛለን.

ተግባር removeCc(str)(መመለስ str.replace(/()/g፣ "$1");) removeCc("camelCase") // "የግመል መያዣ" removeCc("helloWorldItIsMe") // "ሠላም አለም እኔ ነኝ"

ምሳሌ፡ አቢይ ሆሄያትን ማስወገድ

አሁን ብዙ አላስፈላጊ አቢይ ሆሄያት ያለው ሕብረቁምፊ አለን። እነሱን እንዴት እንደሚያስወግዱ አውቀዋል? በመጀመሪያ ሁሉንም አቢይ ሆሄያት መምረጥ አለብን. ከዚያ አለምአቀፍ መቀየሪያውን በመጠቀም የቁምፊ ስብስብ እንፈልጋለን፡

የመተካት ዘዴን እንደገና እንጠቀማለን፣ ግን በዚህ ጊዜ ቁምፊውን እንዴት ትንሽ ፊደል እናደርጋለን?

ተግባር lowercase (str) (ተመለስ str.replace (//g, ???);)

ፍንጭ፡ በመተካት() ዘዴ አንድን ተግባር እንደ ሁለተኛው መለኪያ መግለጽ ይችላሉ።

የተገኘውን ተዛማጅ እሴት ላለመያዝ የቀስት ተግባርን እንጠቀማለን። በጃቫ ስክሪፕት regexp መተኪያ ዘዴ ውስጥ አንድ ተግባርን ሲጠቀሙ ፣ተዛማጁ ከተገኘ በኋላ ተግባሩ ይጠራል ፣ እና የተግባሩ ውጤት እንደ ምትክ ሕብረቁምፊ ጥቅም ላይ ይውላል። በጣም የተሻለው፣ ግጥሚያው ዓለም አቀፋዊ ከሆነ እና ብዙ ተዛማጆች ከተገኙ፣ ለተገኘው እያንዳንዱ ግጥሚያ ተግባሩ ይጠራል።

ተግባር lowercase (str) (መመለስ str.replace (//g, (u) => u.toLowerCase());) lowercase ("የግመል መያዣ") // "የግመል መያዣ" lowercase ("ሄሎ ዓለም እኔ ነኝ" // "ሰላም አለም እኔ ነኝ"

RegExpገንቢ ጽሑፍን ከስርዓተ ጥለት ጋር ለማዛመድ መደበኛ የቃላት አገላለጽ ነገርን ይፈጥራል።

ለመደበኛ አገላለጾች መግቢያ፣ ያንብቡ መደበኛ መግለጫዎች ምዕራፍበውስጡ ጃቫስክሪፕት መመሪያ.

የዚህ በይነተገናኝ ምሳሌ ምንጭ በ GitHub ማከማቻ ውስጥ ተከማችቷል። በይነተገናኝ ምሳሌዎች ፕሮጄክት ላይ ማበርከት ከፈለጉ፣ እባክዎ https://github.com/mdn/interactive-emples ን ይዝጉ እና የመሳብ ጥያቄ ይላኩልን።

አገባብ

ስነ-ጽሑፋዊ፣ ገንቢ እና የፋብሪካ ማስታወሻዎች ሊኖሩ ይችላሉ።

/ ሥርዓተ-ጥለት / ባንዲራዎች አዲስ RegExp (ስርዓተ ጥለት [፣ ባንዲራዎች]) RegExp (ስርዓተ-ጥለት [፣ ባንዲራዎች])

መለኪያዎች

ስርዓተ-ጥለት የመደበኛ አገላለጽ ጽሑፍ; ወይም እንደ ES5፣ ሌላ የ RegExp ነገር ወይም ቃል በቃል (ለሁለቱ የ RegExp ገንቢ ማስታወሻዎች ብቻ)። ከትክክለኛው ሕብረቁምፊ የበለጠ ሰፊ የእሴቶች ክልልን ማዛመድ እንዲችሉ ቅጦችን ሊያካትቱ ይችላሉ።

ባንዲራዎች

ከተገለፀ ባንዲራዎች ለመጨመር ባንዲራዎችን የያዘ ሕብረቁምፊ ነው; ወይም ለሥርዓተ-ጥለት አንድ ነገር ከቀረበ የሰንደቅ ዓላማ ሕብረቁምፊው የትኛውንም የዚያ ነገር ባንዲራ ይተካዋል (እና የመጨረሻው ኢንዴክስ እንደ ES2015) እንደገና ይጀመራል። የነገሩ ባንዲራዎች (እና የመጨረሻው ኢንዴክስ ዋጋ) ይገለበጣሉ።

ባንዲራዎች የሚከተሉትን የቁምፊዎች ጥምረት ሊይዙ ይችላሉ፡ G ዓለም አቀፍ ግጥሚያ; ከመጀመሪያው ግጥሚያ በኋላ ከማቆም ይልቅ ሁሉንም ግጥሚያዎች ያግኙ።እኔ ጉዳይ ችላ; ባንዲራ ከነቃ የዩኒኮድ መያዣ ማጠፍያ ይጠቀሙ። ሜትር ባለብዙ መስመር; የመጀመሪያ እና የመጨረሻ ቁምፊዎችን (^ እና $) በበርካታ መስመሮች ላይ እንደ መስራት (ማለትም ከመጀመሪያ ወይም መጨረሻ ጋር ይዛመዳል)እያንዳንዱ

መስመር (በ \n ወይም \r የተገደበ)፣ የጠቅላላው የግቤት ሕብረቁምፊ መጀመሪያ ወይም መጨረሻ ብቻ አይደለም።

s "dotAll"; ይፈቅዳል። አዲስ መስመሮችን ለማዛመድ. u ዩኒኮድ; ስርዓተ-ጥለትን እንደ የዩኒኮድ ነጥቦች ቅደም ተከተል ይያዙ። (በተጨማሪ ይመልከቱሁለትዮሽ ሕብረቁምፊዎች )..

  • የሚያጣብቅ; በዒላማው ሕብረቁምፊ ውስጥ ያለው የዚህ መደበኛ አገላለጽ በመጨረሻው ኢንዴክስ ንብረት ከተመለከተው መረጃ ጠቋሚ ጋር ብቻ ይዛመዳል (እና ከኋላ ካሉ ኢንዴክሶች ጋር ለማዛመድ አይሞክርም)።መግለጫ
  • የ RegExp ነገርን ለመፍጠር ሁለት መንገዶች አሉ፡- ሀቃል በቃል ምልክት

እና ሀ

ገንቢ

የቃል አረፍተ ነገር አገላለጹ ሲገመገም መደበኛውን አገላለጽ ያቀርባል. መደበኛው አገላለጽ ቋሚ ሆኖ በሚቆይበት ጊዜ የቃል ምልክቶችን ይጠቀሙ። ለምሳሌ፣ በ loop ውስጥ ጥቅም ላይ የዋለውን መደበኛ አገላለጽ ለመገንባት ቀጥተኛ ማስታወሻን ከተጠቀሙ፣ መደበኛው አገላለጽ በእያንዳንዱ ድግግሞሹ ላይ እንደገና አይሰበሰብም።

የመደበኛው አገላለጽ ነገር ገንቢ፣ ለምሳሌ አዲስ RegExp("ab+c")፣ መደበኛውን አገላለጽ የሩጫ ጊዜ ማጠናቀርን ያቀርባል። የመደበኛው የቃላት አገላለጽ ስርዓተ ጥለት እንደሚቀየር፣ ወይም ስርዓተ-ጥለትን ሳታውቁ እና ከሌላ ምንጭ እንደ ተጠቃሚ ግብአት እያገኘህ ስትሆን የገንቢውን ተግባር ተጠቀም።

ከ ECMAScript 6 ጀምሮ፣ አዲስ RegExp(/ab+c/፣ "i") ከአሁን በኋላ አይጣልም የታይፕ ስህተት("አንድ RegExp ከሌላ ሲገነባ ባንዲራዎችን ማቅረብ አይቻልም") የመጀመሪያው ነጋሪ እሴት RegExp ሲሆን ሁለተኛው የባንዲራ ክርክር ሲኖር በምትኩ ከክርክሩ አዲስ RegExp ይፈጠራል።

የገንቢውን ተግባር በሚጠቀሙበት ጊዜ የተለመደው የሕብረቁምፊ ማምለጫ ሕጎች (በሕብረቁምፊ ውስጥ ሲካተቱ ከ \\ ልዩ ቁምፊዎች በፊት) አስፈላጊ ናቸው. ለምሳሌ, የሚከተሉት እኩል ናቸው:

እንደገና ይፍቀዱ = /\ w+/ እንደገና = አዲስ RegExp ("\\ w+")

ንብረቶች

RegExp.ፕሮቶታይፕንብረቶችን ወደ ሁሉም ነገሮች ለመጨመር ይፈቅዳል። የ RegExp[@@species] ደጋፊ ንብረት የ RegExp ገንቢውን ይመልሳል። RegExp ያግኙ[@@ዝርያዎች] የመጨረሻው ኢንዴክስ የሚቀጥለውን ግጥሚያ የሚጀምርበትን ኢንዴክስ የሚገልጽ የመደበኛ አገላለጽ ሁኔታዎች የማንበብ/የመፃፍ ኢንቲጀር ንብረት ነው። RegExp.lastIndex

የሚቀጥለውን ግጥሚያ የሚጀምርበት መረጃ ጠቋሚ።

ዘዴዎች

ዓለም አቀፍ የ RegExp ነገር የራሱ ዘዴዎች የሉትም። ሆኖም ግን, በፕሮቶታይፕ ሰንሰለት በኩል አንዳንድ ዘዴዎችን ይወርሳል.

ንብረቶች

የ RegExp የነገሮች እና ምሳሌዎች ምሳሌ

ምሳሌዎች

የውሂብ ቅርጸት ለመቀየር መደበኛ አገላለጽ በመጠቀም

let str = "#foo#" let regex = /foo/y regex.lastIndex = 1 regex.test(str) // true regex.lastIndex = 5 regex.test(str) // false (የመጨረሻው ኢንዴክስ ግምት ውስጥ ይገባል ተጣባቂ ባንዲራ) regex.lastIndex // 0 (ከግጥሚያው ውድቀት በኋላ ዳግም ይጀምር)

መደበኛ አገላለጽ እና የዩኒኮድ ቁምፊዎች

እንደ ሲሪሊክ ወይም ዕብራይስጥ ካሉ የሌሎች ቋንቋዎች ቁምፊዎችን ለማዛመድ \uን ይጠቀሙ ህህህህህህ፣ የት ህህህህህህየቁምፊው የዩኒኮድ እሴት በሄክሳዴሲማል ነው። ይህ ምሳሌ የዩኒኮድ ቁምፊዎችን ከአንድ ቃል እንዴት መለየት እንደሚቻል ያሳያል።

ፅሁፍ = "በሩሲያኛ የናሙና ጽሁፍ" እናድርግ regex = /[\u0400-\u04FF]+/g let match = regex.exec(text) console.log(match) // logs "Sample" console.log(regex . lastIndex) // መዝገቦች "7" let match2 = regex.exec(text) console.log(match2) // መዝገቦች "በ" console.log(regex.lastIndex) // መዝገቦች "15" // እና የመሳሰሉት

የንዑስ ጎራ ስም ከዩአርኤል በማውጣት ላይ

let url = "http://xxx.domain.com" console.log(/[^.]+/.exec(url.substr(7)) // መዝገቦች "xxx"

ዝርዝሮች

ዝርዝር መግለጫ ሁኔታ አስተያየት
ECMAScript 3ኛ እትም (ECMA-262) መደበኛ የመጀመሪያ ትርጉም. በጃቫስክሪፕት 1.1 ውስጥ ተተግብሯል.
ECMAScript 5.1 (ECMA-262)
መደበኛ
ECMAScript 2015 (6ኛ እትም፣ ECMA-262)
በዚያ ዝርዝር ውስጥ የ "RegExp" ፍቺ.
መደበኛ የመጀመሪያው ክርክር RegExp ሲሆን ሁለተኛው ክርክር ሲኖር የ RegExp ገንቢው አይጣልም። ዩኒኮድ እና ተለጣፊ ባንዲራዎችን ያስተዋውቃል።
ECMAScript የቅርብ ጊዜ ረቂቅ (ECMA-262)
በዚያ ዝርዝር ውስጥ የ "RegExp" ፍቺ.
ረቂቅ

የአሳሽ ተኳኋኝነት

በዚህ ገጽ ላይ ያለው የተኳኋኝነት ሰንጠረዥ ከተዋቀረ ውሂብ የመነጨ ነው። በመረጃው ላይ ማበርከት ከፈለጉ፣ እባክዎ https://github.com/mdn/browser-compat-data ይመልከቱ እና የመሳብ ጥያቄ ይላኩልን።