РегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ - ÑÑо ÑаблонÑ, иÑполÑзÑемÑе Ð´Ð»Ñ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей Ñимволов в ÑÑÑокаÑ
. Ð JavaScript ÑегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñакже ÑвлÑÑÑÑÑ Ð¾Ð±ÑекÑами. ÐÑи ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð² меÑодаÑ
exec
и test
обÑекÑа RegExp
а Ñакже match
, replace
, search
, split
обÑекÑа String
. ÐÐ°Ð½Ð½Ð°Ñ Ð³Ð»Ð°Ð²Ð° опиÑÑÐ²Ð°ÐµÑ ÑегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² JavaScript.
РегÑлÑÑное вÑÑажение можно ÑоздаÑÑ Ð´Ð²ÑÐ¼Ñ ÑпоÑобами:
ÐÑполÑзÑÑ Ð»Ð¸ÑеÑал ÑегÑлÑÑного вÑÑажениÑ, напÑимеÑ:
ÐиÑеÑÐ°Ð»Ñ ÑегÑлÑÑнÑÑ Ð²ÑÑажений вÑзÑваÑÑ Ð¿ÑедваÑиÑелÑнÑÑ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñи анализе ÑкÑипÑа. ÐÑли ваÑе ÑегÑлÑÑное вÑÑажение поÑÑоÑнно, Ñо полÑзÑйÑеÑÑ Ð¸Ð¼, ÑÑÐ¾Ð±Ñ ÑвелиÑиÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ.
ÐÑзÑÐ²Ð°Ñ ÑÑнкÑÐ¸Ñ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¾Ñ Ð¾Ð±ÑекÑа RegExp
, напÑимеÑ:
var re = new RegExp("ab+c");
ÐÑполÑзование конÑÑÑÑкÑоÑа влеÑÑÑ Ð·Ð° Ñобой компилÑÑÐ¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¸ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа. ÐÑполÑзÑйÑе даннÑй ÑпоÑоб, еÑли знаеÑе, ÑÑо вÑÑажение бÑÐ´ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ Ð¸Ð»Ð¸ не знаеÑе Ñаблон заÑанее. ÐапÑÐ¸Ð¼ÐµÑ Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе его из ÑÑоÑоннего иÑÑоÑника, пÑи полÑзоваÑелÑÑком вводе.
Шаблон ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· обÑÑнÑÑ
Ñимволов, напÑÐ¸Ð¼ÐµÑ /abc/
, или комбинаÑий обÑÑнÑÑ
и ÑпеÑиалÑнÑÑ
Ñимволов, напÑÐ¸Ð¼ÐµÑ /ab*c/
или /Chapter (\d+)\.\d*/
. ÐоÑледний пÑÐ¸Ð¼ÐµÑ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ñкобки, коÑоÑÑе иÑполÑзÑÑÑÑÑ ÐºÐ°Ðº "запоминаÑÑий меÑ
анизм". СооÑвеÑÑÑвие ÑÑой ÑаÑÑи Ñаблона запоминаеÑÑÑ Ð´Ð»Ñ Ð´Ð°Ð»ÑнейÑего иÑполÑзованиÑ, как опиÑано в ÐÑполÑзование Ñовпадений подÑÑÑок заклÑÑÑннÑÑ
в Ñкобки.
ÐÑоÑÑÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð½Ð°Ñ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÑÑмого ÑооÑвеÑÑÑÐ²Ð¸Ñ Ð² ÑекÑÑе. ÐапÑимеÑ, Ñаблон /abc/
ÑооÑвеÑÑÑвÑÐµÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñии Ñимволов в ÑÑÑоке ÑолÑко когда ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ 'abc' вÑÑÑеÑаÑÑÑÑ Ð²Ð¼ÐµÑÑе и в Ñом же поÑÑдке. Такое ÑопоÑÑавление пÑоизойдÑÑ Ð² ÑÑÑоке "Hi, do you know your abc's?" и "The latest airplane designs evolved from slabcraft." РобоиÑ
ÑлÑÑаÑÑ
ÑопоÑÑавление пÑоизойдÑÑ Ñ Ð¿Ð¾Ð´ÑÑÑокой 'abc'. СопоÑÑавление не пÑоизойдÑÑ Ð² ÑÑÑоке "Grab crab", поÑÐ¾Ð¼Ñ ÑÑо она не ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ 'abc'.
Ð ÑлÑÑае когда поиÑк ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑебÑÐµÑ Ñего-Ñо болÑÑего, Ñем пÑÑмое ÑопоÑÑавление, напÑÐ¸Ð¼ÐµÑ Ð½Ð°Ñ
ождение поÑледоваÑелÑноÑÑи Ñимволов 'b' или наÑ
ождение пÑобела, Ñаблон вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ ÑпеÑиалÑнÑе ÑимволÑ. ÐапÑимеÑ, Ñаблон /ab*c/
ÑооÑвеÑÑÑвÑÐµÑ Ð»Ñбой комбинаÑии Ñимволов, в коÑоÑой за 'a' ÑледÑÐµÑ Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более Ñимволов 'b' (*
ознаÑÐ°ÐµÑ Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ более вÑ
ождений пÑедÑдÑÑего Ñимвола), за коÑоÑÑми ÑÑÐ°Ð·Ñ Ð¶Ðµ ÑледÑÐµÑ Ñимвол 'c'. Ð ÑÑÑоке "cbbabbbbcdebc," ÑÑÐ¾Ð¼Ñ ÑÐ°Ð±Ð»Ð¾Ð½Ñ ÑопоÑÑавлÑеÑÑÑ Ð¿Ð¾Ð´ÑÑÑока 'abbbbc'.
Ð ÑледÑÑÑей ÑаблиÑе пÑиводиÑÑÑ Ð¿Ð¾Ð»Ð½Ñй ÑпиÑок ÑпеÑиалÑнÑÑ Ñимволов ÑегÑлÑÑнÑÑ Ð²ÑÑажений Ñ Ð¸Ñ Ð¾Ð¿Ð¸ÑаниÑми.
ТаблиÑа 4.1 СпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÑегÑлÑÑнÑÑ Ð²ÑÑажениÑ. Символ ÐнаÑение\
Ðдно из ÑледÑÑÑего:
/b/
ÑопоÑÑавлÑеÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ 'b'. ÐобавлÑÑ ÑÐ»ÐµÑ Ð¿ÐµÑед b, Ñ.е иÑполÑзÑÑ /\b/
, Ñимвол ÑÑановиÑÑÑ ÑпеÑиалÑнÑм Ñимволом, ознаÑаÑÑим гÑаниÑÑ Ñлова.*
ÑвлÑеÑÑÑ ÑпеÑиалÑнÑм Ñимволом, ÑопоÑÑавлÑемÑм 0 или более повÑоÑений пÑедÑдÑÑего Ñимвола; напÑимеÑ, /a*/
ознаÑÐ°ÐµÑ ÑооÑвеÑÑÑвие 0 или более Ñимволов а. ÐÐ»Ñ Ð±ÑквалÑной инÑеÑпÑеÑаÑии *, поÑÑавÑÑе пеÑед ней обÑаÑнÑй ÑлеÑ; напÑимеÑ, /a\*/
ÑооÑвеÑÑÑвÑÐµÑ 'a*'.^
СооÑвеÑÑÑвÑÐµÑ Ð½Ð°ÑÐ°Ð»Ñ Ð²Ð²Ð¾Ð´Ð°. ÐÑли ÑÑÑановлен Ñлаг многоÑÑÑоÑноÑÑи, Ñакже пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ ÑопоÑÑавление непоÑÑедÑÑвенно поÑле пеÑеноÑа ÑÑÑоки.
ÐапÑимеÑ, /^A/
не ÑооÑвеÑÑÑвÑÐµÑ 'A' в "an A", но ÑооÑвеÑÑÑвÑÐµÑ 'A' в "An E".
ÐÑÐ¾Ñ Ñимвол Ð¸Ð¼ÐµÐµÑ Ð´ÑÑгое знаÑение пÑи поÑвлении в наÑале Ñаблона набоÑа Ñимволов.
ÐапÑимеÑ, /[^a-z\s]/
ÑооÑвеÑÑÑвÑÐµÑ 'I' в "I have 3 sisters".
$
СооÑвеÑÑÑвÑÐµÑ ÐºÐ¾Ð½ÑÑ Ð²Ð²Ð¾Ð´Ð°. ÐÑли ÑÑÑановлен биÑовÑй Ñлаг многоÑÑÑоÑноÑÑи, Ñакже ÑопоÑÑавлÑеÑÑÑ ÑодеÑÐ¶Ð¸Ð¼Ð¾Ð¼Ñ Ð´Ð¾ пеÑеноÑа ÑÑÑоки.
ÐапÑимеÑ, /t$/
не ÑооÑвеÑÑÑвÑÐµÑ 't' в ÑÑÑоке "eater", но ÑооÑвеÑÑÑвÑÐµÑ ÑÑÑоке "eat".
*
СооÑвеÑÑÑвÑÐµÑ Ð¿ÑедÑдÑÑÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð¾Ð²ÑоÑÐµÐ½Ð½Ð¾Ð¼Ñ 0 или более Ñаз. ÐквиваленÑно {0,}.
ÐапÑимеÑ, /bo*/
ÑооÑвеÑÑÑвÑÐµÑ 'boooo' в "A ghost booooed" и 'b' в "A bird warbled", но не в "A goat grunted".
+
СооÑвеÑÑÑвÑÐµÑ Ð¿ÑедÑдÑÑÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð¾Ð²ÑоÑÐµÐ½Ð½Ð¾Ð¼Ñ 1 или более Ñаз. ÐквиваленÑно {1,}.
ÐапÑимеÑ, /a+/
ÑооÑвеÑÑÑвÑÐµÑ 'a' в "candy" и вÑем Ñимволам 'a' в "caaaaaaandy".
?
СооÑвеÑÑÑвÑÐµÑ Ð¿ÑедÑдÑÑÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð¾Ð²ÑоÑенномÑ
0 или 1 Ñаз. ÐквиваленÑно {0,1}.
ÐапÑимеÑ, /e?le?/
ÑооÑвеÑÑÑвÑÐµÑ 'el' в "angel" и 'le' в "angle" а Ñакже 'l' в "oslo".
ÐÑли иÑполÑзован ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле квалиÑикаÑоÑов *
, +
, ?
, или {}
, Ð´ÐµÐ»Ð°ÐµÑ ÐºÐ²Ð°Ð»Ð¸ÑикаÑÐ¾Ñ "нежаднÑм" (ÑооÑвеÑÑÑвÑÑÑим минималÑÐ½Ð¾Ð¼Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑÐ²Ñ Ñимволов), в оÑлиÑие Ð¾Ñ Ñежима по ÑмолÑаниÑ, ÑвлÑÑÑимÑÑ "жаднÑм" (ÑооÑвеÑÑÑвÑÑÑим макÑималÑÐ½Ð¾Ð¼Ñ ÑиÑÐ»Ñ Ñимволов). ÐапÑимеÑ, иÑполÑзÑÑ /\d+/ не глобалÑное ÑопоÑÑавление "123abc" возвÑаÑÐ°ÐµÑ "123", еÑли иÑполÑзоваÑÑ /\d+?/, ÑолÑко "1" бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑена.
Также иÑполÑзÑеÑÑÑ Ð² ÑпÑеждаÑÑÐ¸Ñ ÑÑвеÑждениÑÑ (assertions), опиÑаннÑÑ Ð² ÑÑÑÐ¾ÐºÐ°Ñ x(?=y) и x(?!y) данной ÑаблиÑÑ.
.
(деÑÑÑиÑÐ½Ð°Ñ ÑоÑка) ÑооÑвеÑÑÑвÑÐµÑ Ð»ÑÐ±Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÐºÑоме пеÑеноÑа ÑÑÑоки.
ÐапÑимеÑ, /.n/
ÑооÑвеÑÑÑвÑÐµÑ 'an' и 'on' в "nay, an apple is on the tree", но не 'nay'.
(x)
СооÑвеÑÑÑвÑÐµÑ 'x' и Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ ÑÑо ÑооÑвеÑÑÑвие. ÐÑо назÑваеÑÑÑ Ð·Ð°Ñ Ð²Ð°ÑÑваÑÑие Ñкобки.
ÐапÑимеÑ, /(foo)/
ÑооÑвеÑÑÑвÑÐµÑ 'foo' в "foo bar." СопоÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑена из ÑлеменÑов ÑезÑлÑÑиÑÑÑÑего маÑÑива [1]
, ..., [n]
.
(?:x)
СооÑвеÑÑÑвÑÐµÑ 'x' но не Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ ÑооÑвеÑÑÑвие. ÐÑо назÑваеÑÑÑ Ð½Ðµ-заÑ
ваÑÑваÑÑие Ñкобки. СопоÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ ÑÑÑока не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑена из ÑлеменÑов ÑезÑлÑÑиÑÑÑÑего маÑÑива [1]
, ..., [n]
. x(?=y)
СооÑвеÑÑÑвÑÐµÑ 'x' ÑолÑко еÑли за 'x' ÑледÑÐµÑ 'y'. ÐÑо назÑваеÑÑÑ ÑпÑеждение.
ÐапÑимеÑ, /Jack(?=Sprat)/
ÑооÑвеÑÑÑвÑÐµÑ 'Jack' ÑолÑко еÑли за ним ÑледÑÐµÑ 'Sprat'. /Jack(?=Sprat|Frost)/
ÑооÑвеÑÑÑвÑÐµÑ 'Jack' ÑолÑко еÑли за ним ÑледÑÐµÑ 'Sprat' или 'Frost'. Тем не менее, ни 'Sprat' ни 'Frost' не ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑопоÑÑавленного ÑезÑлÑÑаÑа.
x(?!y)
СооÑвеÑÑÑвÑÐµÑ 'x' ÑолÑко еÑли за 'x' не ÑледÑÐµÑ 'y'. ÐÑо назÑваеÑÑÑ Ð¾ÑÑиÑаÑелÑное ÑпÑеждение.
ÐапÑимеÑ, /\d+(?!\.)/
ÑооÑвеÑÑÑвÑÐµÑ ÑиÑÐ»Ñ ÑолÑко еÑли за ним не ÑледÑÐµÑ Ð´ÐµÑÑÑиÑÐ½Ð°Ñ ÑоÑка. РегÑлÑÑное вÑÑажение /\d+(?!\.)/.exec("3.141")
ÑопоÑÑÐ°Ð²Ð¸Ñ '141' но не '3.141'.
x|y
СооÑвеÑÑÑвÑÐµÑ Ð»Ð¸Ð±Ð¾ 'x' либо 'y'.
ÐапÑимеÑ, /green|red/
ÑооÑвеÑÑÑвÑÐµÑ 'green' в "green apple" и 'red' в "red apple."
{n}
n - положиÑелÑное Ñелое. СооÑвеÑÑÑвÑÐµÑ Ñовно n
вÑ
ождениÑм пÑедÑдÑÑего Ñимвола.
ÐапÑимеÑ, /a{2}/
не ÑооÑвеÑÑÑвÑÐµÑ 'a' в "candy," но ÑооÑвеÑÑÑвÑÐµÑ Ð²Ñем а в "caandy," пеÑвÑм двÑм а в "caaandy."
{n,m}
m и n - положиÑелÑнÑе ÑелÑе. СооÑвеÑÑÑвÑÐµÑ ÐºÐ°Ðº минимÑм n
и макÑимÑм m
вÑ
ождениÑм пÑедÑдÑÑего Ñимвола. ÐÑи m=n=1 пÑопÑÑкаеÑÑÑ.
ÐапÑимеÑ, /a{1,3}/
ниÑÐµÐ¼Ñ Ð½Ðµ ÑооÑвеÑÑÑвÑÐµÑ Ð² ÑÑÑоке "cndy", ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ 'a' в "candy," двÑм а в "caandy," и ÑÑÑм пеÑвÑм а в "caaaaaaandy". ÐÑмеÑим, ÑÑо пÑи ÑопоÑÑавлении "caaaaaaandy", ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ "aaa", Ñ
оÑÑ Ð¸Ð·Ð½Ð°ÑалÑÐ½Ð°Ñ ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ð±Ð¾Ð»ÑÑе а.
[xyz]
ÐÐ°Ð±Ð¾Ñ Ñимволов. СооÑвеÑÑÑвÑÐµÑ Ð»ÑÐ±Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð· пеÑеÑиÑленнÑÑ
. Ðожно ÑказаÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ñимволов, иÑполÑзÑÑ ÑиÑе. СпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (как ÑоÑка (.
) и звÑздоÑка (*
)) не имеÑÑ ÑпеÑиалÑного знаÑÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи Ñакого набоÑа. ÐÑ
не надо ÑкÑаниÑоваÑÑ. ÐкÑаниÑование ÑабоÑÐ°ÐµÑ Ñакже.
ÐапÑимеÑ, [abcd]
ÑквиваленÑна [a-d]
. Ðни ÑооÑвеÑÑÑвÑÑÑ 'b' в "brisket" и 'c' в "city". /[a-z.]+/
и /[\w.]+/
обе ÑооÑвеÑÑÑвÑÑÑ Ð²ÑÐµÐ¼Ñ Ð² "test.i.ng".
[^xyz]
ÐнвеÑÑиÑованнÑй или дополнÑÑÑий Ð½Ð°Ð±Ð¾Ñ Ñимволов. ÐÑо ознаÑÐ°ÐµÑ ÑооÑвеÑÑÑвие вÑемÑ, ÑÑо не в ÑÐºÐ¾Ð±ÐºÐ°Ñ . Ðожно ÑказаÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ñимволов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑиÑе. ÐÑе, ÑÑо дейÑÑвÑÐµÑ Ð² обÑÑном набоÑе Ñимволов, дейÑÑвÑÐµÑ Ð¸ здеÑÑ.
ÐапÑимеÑ, [^abc]
ÑквиваленÑно [^a-c]
. Ðни ÑооÑвеÑÑÑвÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑно 'r' в "brisket" и 'h' в "chop."
[\b]
СооÑвеÑÑÑвÑÐµÑ Ð±ÑкÑпейÑÑ (U+0008). (Ðе пÑÑаÑÑ Ñ \b
.) \b
СооÑвеÑÑÑвÑÐµÑ Ð³ÑаниÑе Ñлова. ÐÑаниÑа Ñлова ÑооÑвеÑÑÑвÑÐµÑ Ð¿Ð¾Ð·Ð¸Ñии, где за Ñимволом Ñлова не ÑледÑÐµÑ Ð´ÑÑгой Ñимвол Ñлова или пÑедÑеÑÑвÑÐµÑ ÐµÐ¼Ñ. ÐÑмеÑим, ÑÑо гÑаниÑа Ñлова не вклÑÑаеÑÑÑ Ð² ÑооÑвеÑÑÑвие. ÐÑÑгими Ñловами, длина ÑопоÑÑавленной гÑаниÑÑ Ñлова Ñавна нÑлÑ. (Ðе пÑÑаÑÑ Ñ [\b]
.)
ÐÑимеÑÑ:/\bmoo/
ÑооÑвеÑÑÑвÑÐµÑ 'moo' в Ñлове "moon" ;/oo\b/
не ÑооÑвеÑÑÑвÑÐµÑ 'oo' в Ñлове "moon", поÑколÑÐºÑ Ð·Ð° 'oo' ÑледÑÐµÑ Ñимвол 'n' , ÑвлÑÑÑимÑÑ Ñимволом Ñлова;/oon\b/
ÑооÑвеÑÑÑвÑÐµÑ 'oon' в Ñлове "moon", поÑколÑÐºÑ 'oon' ÑвлÑеÑÑÑ Ð¾ÐºÐ¾Ð½Ñанием ÑÑÑоки, и Ñаким обÑазом, за ÑÑими Ñимволами не ÑледÑÐµÑ Ð´ÑÑгой Ñимвол Ñлова;/\w\b\w/
никогда не бÑÐ´ÐµÑ Ð½Ð¸ÑÐµÐ¼Ñ ÑооÑвеÑÑÑвоваÑÑ, поÑколÑÐºÑ Ð·Ð° Ñимволом Ñлова никогда не Ð¼Ð¾Ð¶ÐµÑ ÑледоваÑÑ Ð¸ гÑаниÑа Ñлова, и Ñимвол Ñлова.
Note: JavaScript's regular expression engine defines a specific set of charactersto be "word" characters. Any character not in that set is considered a word break. This set of characters is fairly limited: it consists solely of the Roman alphabet in both upper- and lower-case, decimal digits, and the underscore character. Accented characters, such as "é" or "ü" are, unfortunately, treated as word breaks.
\B
СооÑвеÑÑÑвÑÐµÑ Ð½ÐµÑловообÑазÑÑÑей гÑаниÑе. ÐеÑловообÑазÑÑÑÐ°Ñ Ð³ÑаниÑа ÑооÑвеÑÑÑвÑÐµÑ Ð¿Ð¾Ð·Ð¸Ñии, в коÑоÑой пÑедÑдÑÑий и ÑледÑÑÑий ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвлÑÑÑÑÑ Ñимволами одного Ñипа: либо оба Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑловообÑазÑÑÑими Ñимволами, либо неÑловообÑазÑÑÑими. ÐаÑало и ÐºÐ¾Ð½ÐµÑ ÑÑÑоки ÑÑиÑаÑÑÑÑ Ð½ÐµÑловообÑазÑÑÑими Ñимволами.
ÐапÑимеÑ, /\B../
ÑооÑвеÑÑÑвÑÐµÑ 'oo' в Ñлове "noonday" (, а /y\B./
ÑооÑвеÑÑÑвÑÐµÑ 'ye' в "possibly yesterday."
\cX
Ðде X ÑвлÑеÑÑÑ Ñимволом ÑлÑÑайного вÑбоÑа из поÑледоваÑелÑноÑÑи Ð¾Ñ Ð Ð´Ð¾ Я. СооÑвеÑÑÑвÑÐµÑ ÑпÑавлÑÑÑÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² ÑÑÑоке.
ÐапÑимеÑ, /\cM/
ÑооÑвеÑÑÑвÑÐµÑ control-M (U+000D) в ÑÑÑоке.
\d
СооÑвеÑÑÑвÑÐµÑ ÑиÑÑÐ¾Ð²Ð¾Ð¼Ñ ÑимволÑ. ÐквиваленÑно вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ [0-9]
.
ÐапÑимеÑ, /\d/
or /[0-9]/
ÑооÑвеÑÑÑвÑÐµÑ '2' в "B2 is the suite number."
\D
СооÑвеÑÑÑвÑÐµÑ Ð»ÑÐ±Ð¾Ð¼Ñ Ð½ÐµÑиÑÑÐ¾Ð²Ð¾Ð¼Ñ ÑимволÑ. ÐквиваленÑно вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ [^0-9]
.
ÐапÑимеÑ, /\D/
or /[^0-9]/
ÑооÑвеÑÑÑвÑÐµÑ 'B' в пÑедложении "B2 is the suite number."
\f
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ñогона ÑÑÑаниÑÑ (U+000C). ÐÑобÑй Ñимвол ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑаÑÑÑ.
\n
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿ÐµÑевода ÑÑÑоки (U+000A). \r
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð²Ð¾Ð·Ð²ÑаÑа каÑеÑки (U+000D). \s
СооÑвеÑÑÑвÑÐµÑ Ð¾Ð´Ð¸Ð½Ð¾ÑÐ½Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿ÑÑÑого пÑоÑÑÑанÑÑва, вклÑÑÐ°Ñ Ð¿Ñобел, ÑабÑлÑÑиÑ, пÑогон ÑÑÑаниÑÑ, пеÑевод ÑÑÑоки. ÐквиваленÑен [ \f\n\r\t\v\u00A0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u2028\u2029\u202f\u205f\u3000]
.
ÐапÑимеÑ, /\s\w*/
ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ ' bar' в "foo bar."
\S
СооÑвеÑÑÑвÑÐµÑ Ð¾Ð´Ð¸Ð½Ð¾ÑÐ½Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½ÐµÐ¿ÑÑÑого пÑоÑÑÑанÑÑва. ÐквиваленÑен [^ \f\n\r\t\v\u00A0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000]
.
ÐапÑимеÑ, /\S\w*/
ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ 'foo' в "foo bar."
\t
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð³Ð¾ÑизонÑалÑной ÑабÑлÑÑии (U+0009). \v
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð²ÐµÑÑикалÑной ÑабÑлÑÑии (U+000B). \w
СооÑвеÑÑÑвÑÐµÑ Ð»ÑÐ±Ð¾Ð¼Ñ ÑиÑÑобÑÐºÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð²ÐºÐ»ÑÑÐ°Ñ Ð½Ð¸Ð¶Ð½ÐµÐµ подÑÑÑкивание. ÐквиваленÑен [A-Za-z0-9_]
.
ÐапÑимеÑ, /\w/
ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ 'a' в "apple," '5' в "$5.28," и '3' в "3D."
\W
СооÑвеÑÑÑвÑÐµÑ Ð»ÑÐ±Ð¾Ð¼Ñ Ð½Ðµ ÑиÑÑобÑÐºÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ ÑимволÑ. РавноÑилен [^A-Za-z0-9_]
.
ÐапÑимеÑ, /\W/
or /[^A-Za-z0-9_]/
ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ '%' в "50%."
\n
Ðде n ÑÑо положиÑелÑное Ñелое, обÑаÑÐ½Ð°Ñ ÑÑÑлка на поÑледнÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½ÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ, ÑооÑвеÑÑÑвÑÑÑÑÑ n , заклÑÑÑннÑÑ Ð² кÑÑглÑе Ñкобки в ÑегÑлÑÑном вÑÑажении (ÑÑиÑÐ°Ñ Ð»ÐµÐ²Ñе Ñкобки).
ÐапÑимеÑ, /apple(,)\sorange\1/
ÑооÑвеÑÑÑвÑÐµÑ 'apple, orange,' в "apple, orange, cherry, peach."
\0
СооÑвеÑÑÑвÑÐµÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ NULL (U+0000). Ðе ÑледÑÐµÑ ÑÑавиÑÑ Ð·Ð° ним дÑÑгой ÑиÑÑовой Ñимвол, поÑколÑÐºÑ \0<digits>
ÑвлÑеÑÑÑ Ð²Ð¾ÑÑмеÑиÑной ÑкÑаниÑÑÑÑей поÑледоваÑелÑноÑÑÑÑ. \xhh
СооÑвеÑÑÑвÑÐµÑ Ñимволам кода hh (две ÑеÑÑнадÑаÑеÑиÑнÑе ÑиÑÑÑ) \uhhhh
СооÑвеÑÑÑвÑÐµÑ Ñимволам кода hhhh (ÑеÑÑÑе ÑеÑÑнадÑаÑеÑиÑнÑе ÑиÑÑÑ).
ÐкÑаниÑование полÑзоваÑелÑÑкого ввода, ÑооÑвеÑÑÑвÑÑÑего бÑквенной ÑÑÑоке внÑÑÑи ÑегÑлÑÑного вÑÑажениÑ, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾ÑÑигнÑÑо пÑоÑÑой заменой:
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
}
ÐÑполÑзование Ñкобок
Скобки вокÑÑг лÑбой ÑаÑÑи ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°ÑаÑÑ ÑÑо ÑÑа ÑаÑÑÑ Ñовпадаемой подÑÑÑоки бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð°. Раз запомнена, подÑÑÑока Ð¼Ð¾Ð¶ÐµÑ Ð²ÑбÑана Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ðº ÑÑо опиÑано в Using Parenthesized Substring Matches.
ÐапÑимеÑ, паÑÑеÑн /Chapter (\d+)\.\d*/
вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑкÑаниÑÑÑÑие и ÑпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸ ÑказÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, ÑÑо ÑаÑÑÑ Ñаблона должна бÑÑÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð°. Ðн ÑоÑно ÑооÑвеÑÑÑвÑÐµÑ Ñимволам Ñлова 'Chapter ', за коÑоÑÑми ÑледÑÐµÑ Ð¾Ð´Ð¸Ð½ или более ÑиÑÑовÑÑ
Ñимволов (\d
ознаÑÐ°ÐµÑ Ð»Ñбой ÑиÑÑовой Ñимвол, а '+'
ознаÑÐ°ÐµÑ 1 или более Ñаз), за коÑоÑÑм ÑледÑÐµÑ Ð´ÐµÑÑÑиÑÐ½Ð°Ñ ÑоÑка (Ñама по Ñебе ÑвлÑÑÑаÑÑÑ ÑпеÑиалÑнÑм Ñимволом; пÑедÑеÑÑвÑÑÑий деÑÑÑиÑной ÑоÑке ÑÐ»ÐµÑ ' \' ознаÑаеÑ, ÑÑо паÑÑеÑн должен иÑкаÑÑ Ð»Ð¸ÑеÑалÑнÑй Ñимвол '.'), поÑле коÑоÑой ÑледÑÐµÑ Ð»Ñбой ÑиÑÑовой Ñимвол 0 или более Ñаз ('\d'
обознаÑÐ°ÐµÑ ÑиÑÑовой Ñимвол, '*'
обознаÑÐ°ÐµÑ 0 или более Ñаз). ÐÑоме Ñого, кÑÑглÑе Ñкобки иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ð¿ÐµÑвÑÑ
же ÑовпавÑиÑ
ÑиÑÑовÑÑ
Ñимволов.
ÐÑÐ¾Ñ Ñаблон бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½ во ÑÑазе "Open Chapter 4.3, paragraph 6" и ÑиÑÑа '4' бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð°. Ðо он не бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½ во ÑÑазе "Chapter 3 and 4", поÑколÑÐºÑ ÑÑа ÑÑÑока не Ð¸Ð¼ÐµÐµÑ ÑоÑки поÑле ÑиÑÑÑ '3'.
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑопоÑÑавиÑÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ Ð±ÐµÐ· вÑзова ÑовпавÑей ÑаÑÑи Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ, внÑÑÑи кÑÑглÑÑ
Ñкобок необÑ
одимо пÑедваÑиÑÑ Ð¿Ð°ÑÑеÑн ÑоÑеÑанием Ñимволов ' ?:'
. ÐапÑимеÑ, Ñаблон (?:\d+)
бÑÐ´ÐµÑ ÑооÑвеÑÑÑвоваÑÑ Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¸Ð»Ð¸ более ÑиÑÑÐ¾Ð²Ð¾Ð¼Ñ ÑимволÑ, но не Ð·Ð°Ð¿Ð¾Ð¼Ð½Ð¸Ñ ÑовпавÑиÑ
Ñимволов.
РегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð² меÑодаÑ
test
и exec
обÑекÑа RegExp
и Ñ Ð¼ÐµÑодами match
, replace
, search
, и split
обÑекÑа String
. ÐÑи меÑÐ¾Ð´Ñ Ð¿Ð¾Ð´Ñобно обÑÑÑнÑÑÑÑÑ Ð² СпÑавоÑнике JavaScript
exec
ÐеÑод RegExp,
коÑоÑÑй вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² ÑÑÑоке. Ðн возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
. test
ÐеÑод RegExp
, коÑоÑÑй ÑеÑÑиÑÑÐµÑ Ñовпадение в ÑÑÑоке. ÐозвÑаÑÐ°ÐµÑ Ð»Ð¸Ð±Ð¾ иÑÑÐ¸Ð½Ñ Ð»Ð¸Ð±Ð¾ ложÑ. match
ÐеÑод String
, коÑоÑÑй вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² ÑÑÑоке. Ðн возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
либо null еÑли ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¾ÑÑÑÑÑÑвÑÑÑ. search
ÐеÑод String,
коÑоÑÑй ÑеÑÑиÑÑÐµÑ Ð½Ð° Ñовпадение в ÑÑÑоке. Ðн возвÑаÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ ÑовпадениÑ, или -1 еÑли Ñовпадений не бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾. replace
ÐеÑод String
, коÑоÑÑй вÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² ÑÑÑоке, и заменÑÐµÑ ÑовпавÑÑÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ Ð´ÑÑгой подÑÑÑокой, пеÑеданной как аÑгÑÐ¼ÐµÐ½Ñ Ð² ÑÑÐ¾Ñ Ð¼ÐµÑод. split
ÐеÑод String,
коÑоÑÑй иÑполÑзÑÐµÑ ÑегÑлÑÑное вÑÑажение или ÑикÑиÑованнÑÑ ÑÑÑÐ¾ÐºÑ ÑÑÐ¾Ð±Ñ ÑазбиÑÑ ÑÑÑÐ¾ÐºÑ Ð½Ð° маÑÑив подÑÑÑок.
ЧÑÐ¾Ð±Ñ Ð¿ÑоÑÑо ÑзнаÑÑ ÐµÑÑÑ Ð»Ð¸ в ÑÑÑоке ÑÑо либо ÑооÑвеÑÑÑвÑÑÑее ÑаблонÑ, воÑполÑзÑйÑеÑÑ Ð¼ÐµÑодами test
или search
; а ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±Ð¾Ð»ÑÑе инÑоÑмаÑии полÑзÑйÑеÑÑ Ð¼ÐµÑодами exec
или match
(Ñ
оÑÑ ÑÑи меÑÐ¾Ð´Ñ ÑабоÑаÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ). ÐÑли Ð²Ñ Ð¿Ð¾Ð»ÑзÑеÑеÑÑ exec
или match
и еÑли ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÐµÑÑÑ, ÑÑи меÑÐ¾Ð´Ñ Ð²ÐµÑнÑÑ Ð¼Ð°ÑÑив и обновлÑннÑе ÑвойÑÑва обÑекÑа аÑÑоÑииÑованного ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð° Ñакже пÑедопÑеделÑнного обÑекÑа RegExp
ÑегÑлÑÑного вÑÑажениÑ. ÐÑли Ñовпадений неÑ, меÑод exec
веÑнÑÑ null
(коÑоÑÑй ÑконвеÑÑиÑÑеÑÑÑ Ð² false
).
Ð Ñлед. пÑимеÑе, ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ Ð¼ÐµÑод exec
ÑÑÐ¾Ð±Ñ Ð½Ð°Ð¹Ñи ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð² ÑÑÑоке.
var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz");
ÐÑли вам не нÑжен доÑÑÑп к ÑвойÑÑвам ÑегÑлÑÑного вÑÑажениÑ, Ñо алÑÑеÑнаÑивнÑй ÑпоÑоб полÑÑиÑÑ myArray
можно Ñак:
var myArray = /d(b+)d/g.exec("cdbbdbsbz");
ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе ÑконÑÑÑÑиÑоваÑÑ ÑегÑлÑÑное вÑÑажение из ÑÑÑоки, дÑÑгой ÑпоÑоб ÑделаÑÑ ÑÑо пÑиведÑн ниже:
var myRe = new RegExp("d(b+)d", "g");
var myArray = myRe.exec("cdbbdbsbz");
С помоÑÑÑ ÑÑÐ¸Ñ ÑкÑипÑов, поиÑк ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑÑаеÑÑÑ Ð¸ возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив и обновлÑннÑе ÑвойÑÑва показаннÑе в Ñлед. ÑаблиÑе.
Table 4.3 РезÑлÑÑаÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÐбÑÐµÐºÑ Ð¡Ð²Ð¾Ð¹ÑÑво или Ð¸Ð½Ð´ÐµÐºÑ ÐпиÑание Ð ÑÑом пÑимеÑе.myArray
СовпавÑÐ°Ñ ÑÑÑока и вÑе запомненнÑе подÑÑÑоки. ["dbbd", "bb"]
index
ÐÐ½Ð´ÐµÐºÑ ÑовпавÑей подÑÑÑоки (Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð°ÑинаеÑÑÑ Ñ Ð½ÑлÑ). 1
input
ÐÑÑ
Ð¾Ð´Ð½Ð°Ñ ÑÑÑока. "cdbbdbsbz"
[0]
ÐоÑледние ÑовпавÑие ÑимволÑ. "dbbd"
myRe
lastIndex
ÐÐ½Ð´ÐµÐºÑ Ñ ÐºÐ¾ÑоÑого наÑнÑÑÑÑ Ñлед. поиÑк ÑовпадениÑ. (ÐÑо ÑвойÑÑво опÑеделÑеÑÑÑ ÑолÑко еÑли ÑегÑлÑÑное вÑÑажение иÑполÑзÑÐµÑ Ð¿Ð°ÑамеÑÑ g, опиÑаннÑй в [Advanced Searching With Flags](#Advanced_Searching_With_Flags).) 5
source
ТекÑÑ Ñаблона. ÐбновлÑеÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑегÑлÑÑного вÑÑажениÑ, а не во вÑÐµÐ¼Ñ Ð²ÑполнениÑ. "d(b+)d"
Ðак показано во вÑоÑом ваÑианÑе ÑÑого пÑимеÑа, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑегÑлÑÑное вÑÑажение, Ñозданное пÑи помоÑи иниÑиализаÑоÑа обÑекÑа, без пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÐµÐ³Ð¾ пеÑеменной. Таким обÑазом, еÑли Ð²Ñ Ð¸ÑполÑзÑеÑе даннÑÑ ÑоÑÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи без пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑеменной, Ñо в пÑоÑеÑÑе далÑнейÑего иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ Ð½Ðµ можеÑе полÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑвойÑÑвам данного ÑегÑлÑÑного вÑÑажениÑ. ÐапÑимеÑ, Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑледÑÑÑий ÑкÑипÑ:
var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz");
console.log("The value of lastIndex is " + myRe.lastIndex);
ÐÑÐ¾Ñ ÑкÑÐ¸Ð¿Ñ Ð²ÑведеÑ:
The value of lastIndex is 5
Ðднако, еÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑледÑÑÑий ÑкÑипÑ:
var myArray = /d(b+)d/g.exec("cdbbdbsbz");
console.log("The value of lastIndex is " + /d(b+)d/g.lastIndex);
Ðн вÑведеÑ:
The value of lastIndex is 0
Ð¡Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ /d(b+)d/g
в двÑÑ
ÑлÑÑаÑÑ
ÑвлÑÑÑÑÑ ÑазнÑми обÑекÑами ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸, ÑледоваÑелÑно, имеÑÑ ÑазлиÑнÑе знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑвойÑÑва lastIndex
. ÐÑли вам необÑ
одим доÑÑÑп к ÑвойÑÑвам обÑекÑа, Ñозданного пÑи помоÑи иниÑиализаÑоÑа, Ñо Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑнаÑала пÑиÑвоиÑÑ ÐµÐ³Ð¾ пеÑеменной.
ÐÑполÑзование Ñкобок в Ñаблоне ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²Ð»ÐµÑÑÑ "запоминание" ÑовпавÑей подÑÑÑоки. ÐÐ»Ñ Ð¿ÑимеÑа, /a(b)c/
вÑÐ·Ð¾Ð²ÐµÑ Ñовпадение 'abc' и Ð·Ð°Ð¿Ð¾Ð¼Ð½Ð¸Ñ 'b'. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÑкобоÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑйÑе Array
elements [1]
, ..., [n]
.
ЧиÑло возможнÑÑ ÑкобоÑнÑÑ Ð¿Ð¾Ð´ÑÑÑок неогÑаниÑено. ÐозвÑаÑаемÑй маÑÑив ÑодеÑÐ¶Ð¸Ñ Ð²Ñе полÑÑеннÑе ÑовпадениÑ, ÑдовлеÑвоÑÑÑÑие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÐºÐ¾Ð±ÐºÐ°Ñ . СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑÐ²Ð°ÐµÑ ÐºÐ°Ðº иÑполÑзоваÑÑ ÑкобоÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð½Ð°Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑок.
СледÑÑÑий ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ Ð¼ÐµÑод replace(),
ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼ÐµÐ½ÑÑÑ Ð¼ÐµÑÑами Ñлова (ÑимволÑ) в ÑÑÑоке. ÐÐ»Ñ Ð·Ð°Ð¼ÐµÐ½Ñ ÑекÑÑа ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ $1
и $2
Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвого и вÑоÑого ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÑкобоÑного вÑÑажениÑ.
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
ÐÑÐ²ÐµÐ´ÐµÑ "Smith, John".
РаÑÑиÑеннÑй поиÑк Ñ ÑлагамиРегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÑÑ ÑеÑÑÑе опÑионалÑнÑÑ Ñлага, коÑоÑÑе делаÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм глобалÑнÑй и ÑегиÑÑÑонезавиÑимÑй поиÑк. Флаги могÑÑ Ð¸ÑполÑзоваÑÑÑÑ ÑамоÑÑоÑÑелÑно или вмеÑÑе в лÑбом поÑÑдке, а Ñакже могÑÑ ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑегÑлÑÑного вÑÑажениÑ.
Flag Descriptiong
ÐлобалÑнÑй поиÑк. i РегиÑÑÑонезавиÑимÑй поиÑк. m ÐногоÑÑÑоÑнÑй поиÑк. y ÐÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк наÑÐ¸Ð½Ð°Ñ Ñ Ñимвола, коÑоÑÑй наÑ
одиÑÑÑ Ð½Ð° позиÑии ÑвойÑÑва lastindex ÑекÑÑего ÑегÑлÑÑного вÑÑажениÑ.
ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ñлаги в Ñаблоне ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑйÑе ÑледÑÑÑий ÑинÑакÑиÑ:
или
var re = new RegExp("pattern", "flags");
ÐбÑаÑиÑе внимание, ÑÑо Ñлаги ÑвлÑÑÑÑÑ Ð½ÐµÐ¾ÑÑемлемой ÑаÑÑÑÑ ÑегÑлÑÑного вÑÑажениÑ. Флаги не могÑÑ Ð±ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¸Ð»Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¿Ð¾Ð·Ð´Ð½ÐµÐµ.
ÐÐ»Ñ Ð¿ÑимеÑа, re = /\w+\s/g
ÑоздаÑÑ ÑегÑлÑÑное вÑÑажение, коÑоÑое иÑÐµÑ Ð¾Ð´Ð¸Ð½ или более Ñимволов, поÑле коÑоÑÑÑ
ÑледÑÐµÑ Ð¿Ñобел и иÑÐµÑ Ð´Ð°Ð½Ð½Ð¾Ðµ Ñовпадение на пÑоÑÑжении вÑей ÑÑÑоки.
var re = /\w+\s/g;
var str = "fee fi fo fum";
var myArray = str.match(re);
console.log(myArray);
ÐÑÐ²ÐµÐ´ÐµÑ ["fee ", "fi ", "fo "]. Ð ÑÑом пÑимеÑе Ð²Ñ Ð±Ñ Ð¼Ð¾Ð³Ð»Ð¸ замениÑÑ ÑÑÑокÑ:
на ÑледÑÑÑÑÑ:
var re = new RegExp("\\w+\\s", "g");
и полÑÑиÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ.
Флаг m
иÑполÑзÑеÑÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ñ
Ð¾Ð´Ð½Ð°Ñ ÑÑÑока ÑаÑÑмаÑÑивалаÑÑ ÐºÐ°Ðº многоÑÑÑоÑнаÑ. ÐÑли Ñлаг m
иÑполÑзÑеÑÑÑ, Ñо ^
и $
вÑÐ·Ð¾Ð²ÐµÑ Ñовпадение в наÑале или конÑе лÑбой ÑÑÑоки в ÑÑÑоке ввода вмеÑÑо наÑала или конÑа вводимой ÑÑÑоки Ñеликом.
След. пÑимеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ð¸ÑполÑзование ÑегÑлÑÑнÑÑ Ð²ÑÑажений.
Ðзменение поÑÑдка в ÐÑÑ Ð¾Ð´Ð½Ð¾Ð¹ СÑÑокеСлед. пÑÐ¸Ð¼ÐµÑ Ð¸Ð»Ð»ÑÑÑÑиÑÑÐµÑ ÑоÑмиÑование ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ иÑполÑзование string.split()
и string.replace()
. Ðн оÑиÑÐ°ÐµÑ Ð½ÐµÐ¿ÑавилÑно ÑÑоÑмаÑиÑованнÑÑ Ð¸ÑÑ
однÑÑ ÑÑÑокÑ, коÑоÑÐ°Ñ ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° в непÑавилÑном поÑÑдке (Ð¸Ð¼Ñ Ð¸Ð´ÑÑ Ð¿ÐµÑвÑм) ÑазделÑннÑе пÑобелами, ÑабÑлÑÑией и одной ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой. РконÑе, изменÑеÑÑÑ Ð¿Ð¾ÑÑдок ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñн (ÑÐ°Ð¼Ð¸Ð»Ð¸Ñ ÑÑÐ°Ð½ÐµÑ Ð¿ÐµÑвой) и ÑоÑÑиÑÑеÑÑÑ ÑпиÑок.
// The name string contains multiple spaces and tabs,
// and may have multiple spaces between first and last names.
var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
var output = ["---------- Original String\n", names + "\n"];
// Prepare two regular expression patterns and array storage.
// Split the string into array elements.
// pattern: possible white space then semicolon then possible white space
var pattern = /\s*;\s*/;
// Break the string into pieces separated by the pattern above and
// store the pieces in an array called nameList
var nameList = names.split(pattern);
// new pattern: one or more characters then spaces then characters.
// Use parentheses to "memorize" portions of the pattern.
// The memorized portions are referred to later.
pattern = /(\w+)\s+(\w+)/;
// New array for holding names being processed.
var bySurnameList = [];
// Display the name array and populate the new array
// with comma-separated names, last first.
//
// The replace method removes anything matching the pattern
// and replaces it with the memorized stringâsecond memorized portion
// followed by comma space followed by first memorized portion.
//
// The variables $1 and $2 refer to the portions
// memorized while matching the pattern.
output.push("---------- After Split by Regular Expression");
var i, len;
for (i = 0, len = nameList.length; i < len; i++) {
output.push(nameList[i]);
bySurnameList[i] = nameList[i].replace(pattern, "$2, $1");
}
// Display the new array.
output.push("---------- Names Reversed");
for (i = 0, len = bySurnameList.length; i < len; i++) {
output.push(bySurnameList[i]);
}
// Sort by last name, then display the sorted array.
bySurnameList.sort();
output.push("---------- Sorted");
for (i = 0, len = bySurnameList.length; i < len; i++) {
output.push(bySurnameList[i]);
}
output.push("---------- End");
console.log(output.join("\n"));
ÐÑполÑзование ÑпеÑÑимволов Ð´Ð»Ñ Ð¿ÑовеÑки вÑ
однÑÑ
даннÑÑ
Ð Ñлед. пÑимеÑе, ожидаеÑÑÑ ÑÑо полÑзоваÑÐµÐ»Ñ Ð²Ð²ÐµÐ´ÑÑ ÑелеÑоннÑй Ð½Ð¾Ð¼ÐµÑ Ð¸ ÑÑебÑеÑÑÑ Ð¿ÑовеÑиÑÑ Ð¿ÑавилÑноÑÑÑ Ñимволов набÑаннÑÑ Ð¿Ð¾Ð»ÑзоваÑелем. Ðогда полÑзоваÑÐµÐ»Ñ Ð½Ð°Ð¶Ð¼ÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ "Check", ÑкÑÐ¸Ð¿Ñ Ð¿ÑовеÑÐ¸Ñ Ð¿ÑавилÑноÑÑÑ Ð²Ð²ÐµÐ´Ñнного номеÑа. ÐÑли Ð½Ð¾Ð¼ÐµÑ Ð¿ÑавилÑнÑй (ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ñимволами опÑеделÑннÑми в ÑегÑлÑÑном вÑÑажении), Ñо ÑкÑÐ¸Ð¿Ñ Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ ÑообÑение благодаÑноÑÑи Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸ подÑвеÑÐ´Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ. ÐÑли неÑ, Ñо ÑкÑÐ¸Ð¿Ñ Ð¿ÑоинÑоÑмиÑÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑÑо ÑелеÑоннÑй Ð½Ð¾Ð¼ÐµÑ Ð½ÐµÐ¿ÑавилÑнÑй.
ÐнÑÑÑи незаÑ
ваÑÑваÑÑиÑ
Ñкобок (?:
, ÑегÑлÑное вÑÑажение иÑÐµÑ ÑÑи ÑиÑÑÑ \d{3}
ÐÐÐ |
оÑкÑÑваÑÑÑÑ ÑÐºÐ¾Ð±ÐºÑ \(
, заÑем ÑÑи ÑиÑÑÑ \d{3}
, заÑем закÑÑваÑÑÑÑ ÑÐºÐ¾Ð±ÐºÑ \)
, (закÑÑваÑÑÐ°Ñ Ð½ÐµÐ·Ð°Ñ
ваÑÑваÑÑÐ°Ñ Ñкобка )
), заÑем ÑиÑе, ÑлеÑ, или деÑÑÑиÑÐ½Ð°Ñ ÑоÑка, и когда ÑÑо вÑÑажение найдено, Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÑ Ñимвол ([-\/\.])
, ÑледÑÑÑие за ним и запомненнÑе ÑÑи ÑиÑÑÑ \d{3}
, ÑледÑÑÑее ÑооÑвеÑÑÑвие ÑиÑе, ÑлеÑа или деÑÑÑиÑной ÑоÑки \1
, и ÑледÑÑÑие ÑеÑÑÑе ÑиÑÑÑ \d{4}
.
РегÑлÑÑное вÑÑажение иÑÐµÑ ÑнаÑала 0 или Ð¾Ð´Ð½Ñ Ð¾ÑкÑÑваÑÑÑÑ ÑÐºÐ¾Ð±ÐºÑ \(?
, заÑем ÑÑи ÑиÑÑÑ \d{3}
, заÑем 0 или Ð¾Ð´Ð½Ñ Ð·Ð°ÐºÑÑваÑÑÑÑ ÑÐºÐ¾Ð±ÐºÑ \)?
, поÑом одно ÑиÑе, ÑÐ»ÐµÑ Ð¸Ð»Ð¸ ÑоÑка и когда найдÑÑ ÑÑо, Ð·Ð°Ð¿Ð¾Ð¼Ð½Ð¸Ñ Ñимвол ([-\/\.])
, Ñлед. ÑÑи ÑиÑÑÑ \d{3}
, followed by the remembered match of a dash, forward slash, or decimal point \1
, followed by four digits \d{4}
.
СобÑÑие "ÐзмениÑÑ" акÑивиÑÑеÑÑÑ, когда полÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÑвеÑÐ´Ð¸Ñ Ð²Ð²Ð¾Ð´ знаÑÐµÐ½Ð¸Ñ ÑегÑлÑÑного вÑÑажениÑ, нажав клавиÑÑ "Enter".
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript">
var re = /\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/;
function testInfo(phoneInput) {
var OK = re.exec(phoneInput.value);
if (!OK)
window.alert(RegExp.input + " isn't a phone number with area code!");
else window.alert("Thanks, your phone number is " + OK[0]);
}
</script>
</head>
<body>
<p>
Enter your phone number (with area code) and then click "Check". <br />The
expected format is like ###-###-####.
</p>
<form action="#">
<input id="phone" /><button
onclick="testInfo(document.getElementById('phone'));">
Check
</button>
</form>
</body>
</html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4