æ£è¦è¡¨ç¾
æ£è¦è¡¨ç¾ã¨ã¯ãæååå
ã§æåã®çµã¿åãããç
§åããããã«ç¨ãããããã¿ã¼ã³ã§ãã
JavaScript ã§ã¯ãæ£è¦è¡¨ç¾ã¯ãªãã¸ã§ã¯ãã§ãããã¾ãããããã®ãã¿ã¼ã³ã¯ RegExp ã® exec() ããã³ test() ã¡ã½ããããString ã® match()ãmatchAll()ãreplace()ãreplaceAll()ãsearch()ãsplit() ã¡ã½ããã§ä½¿ç¨ã§ãã¾ãã
æ¬ç« ã§ã¯ã JavaScript ã®æ£è¦è¡¨ç¾ã«ã¤ãã¦èª¬æãã¾ããããããã®æ§æè¦ç´ ã®æ¦ç¥ãæä¾ãã¦ãã¾ããããããã®æå³ã¥ãã®è©³ç´°ã«ã¤ãã¦ã¯ãæ£è¦è¡¨ç¾ã®ãªãã¡ã¬ã³ã¹ãåç
§ãã¦ãã ããã
æ£è¦è¡¨ç¾ã®ä½æ
æ£è¦è¡¨ç¾ã¯ 2 éãã®æ¹æ³ã§ä½æãããã¨ãã§ãã¾ãã
-
次ã®ããã«ãã¹ã©ãã·ã¥ã§å²ã¾ãããã¿ã¼ã³ãããªãæ£è¦è¡¨ç¾ãªãã©ã«ã使ç¨ãã¾ãã
jsconst re = /ab+c/;æ£è¦è¡¨ç¾ãªãã©ã«ã¯ã¹ã¯ãªããã®èªã¿è¾¼ã¿æã«ãã®æ£è¦è¡¨ç¾ãã³ã³ãã¤ã«ãã¾ãã æ£è¦è¡¨ç¾ãå¤åããªãå ´åããã®æ¹æ³ã使ãã¨ããããã©ã¼ãã³ã¹ãå¾ããã¾ãã
-
ã¾ããæ¬¡ã®ããã«
RegExpãªãã¸ã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ãå¼ã³åºãæ¹æ³ãããã¾ããjsconst 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" ã¨ããæååã®å ´åã "ab c" ã¨ããé¨åæååãå«ãã§ãã¾ãããæ£ç¢ºãª "abc" ã¨ããé¨åæååãå«ãã§ããããã§ã¯ãªãã®ã§ãä¸è´ãã¾ããã
ç¹æ®æåã®ä½¿ãæ¹
ç´æ¥ã®ä¸è´ãããé«åº¦ãªä½ãã«ä¸è´ãããã®ãæ¤ç´¢ããå ´åãä¾ãã° 1 å以ä¸ã® b ãæ¢ãããããã¯ã¤ãã¹ãã¼ã¹ãè¦ã¤ãããããå ´åããã¿ã¼ã³ã«ç¹æ®æåãå«ãããã¨ãã§ãã¾ãã
ä¾ãã°ã 1 åã® "a" ã« 0 å以ä¸ã® "b" ãç¶ããããã« "c" ãç¶ããã®ã«ä¸è´ãããå ´åã /ab*c/ ã¨ãããã¿ã¼ã³ã使ç¨ããã§ãããã "b" ã®å¾ã® * ã¯ãç´åã®ã¢ã¤ãã ã® 0 å以ä¸ã®åºç¾ããæå³ãã¾ãã
"cbbabbbbcdebc" ã¨ããæååã§ã¯ããã®ãã¿ã¼ã³ã¯ "abbbbc" ã¨ããé¨åæååã«ä¸è´ãã¾ãã
以ä¸ã®ãã¼ã¸ã§ãæ£è¦è¡¨ç¾ã§ä½¿ç¨ã§ããç¹æ®æåã®å®å ¨ãªãªã¹ãã¨ãã®æå³ã詳ãã説æãã¾ãã
- ã¢ãµã¼ã·ã§ã³ã¬ã¤ã
-
ã¢ãµã¼ã·ã§ã³ã«ã¯ãè¡ãåèªã®å§ã¾ãã¨çµããã示ãå¢çããä½ããã®æ¹æ³ã§ä¸è´ããå¯è½æ§ã示ããã¿ã¼ã³ï¼å èªã¿ãå¾è¿½ããæ¡ä»¶å¼ãªã©ï¼ãå«ã¾ãã¾ãã
- æåã¯ã©ã¹ã¬ã¤ã
-
ç°ãªãã¿ã¤ãã®æåãå¤å¥ãã¾ããä¾ãã°ãã¢ã«ãã¡ãããã¨æ°åãå¤å¥ããã
- ã°ã«ã¼ãã¨å¾æ¹åç §ã¬ã¤ã
-
ã°ã«ã¼ãã¯è¤æ°ã®ãã¿ã¼ã³ãå ¨ä½ã¨ãã¦ã°ã«ã¼ãåãããã£ããã£ã°ã«ã¼ãã¯æ£è¦è¡¨ç¾ãã¿ã¼ã³ã使ç¨ãã¦æååã¨ä¸è´ãããéã«ã追å ã®ãµãä¸è´æ å ±ãæä¾ãã¾ãã徿¹åç §ã¯ãåãæ£è¦è¡¨ç¾ã§ä»¥åã«ææãããã°ã«ã¼ããåç §ãã¾ãã
- æ°éåã¬ã¤ã
-
ä¸è´ãããæåãå¼ã®æ°ã示ãã¾ãã
æ£è¦è¡¨ç¾ã§å©ç¨å¯è½ãªãã¹ã¦ã®ç¹æ®æåãä¸ã¤ã®è¡¨ã§è¦ããå ´åã¯ã以ä¸ãåç §ãã¦ãã ããã
| æå / æ§é | 対å¿ããè¨äº |
|---|---|
[xyz], [^xyz], .,
\d, \D, \w, \W,
\s, \S, \t, \r,
\n, \v, \f, [\b],
\0, \cX, \xhh,
\uhhhh, \u{hhhh},
x|y
|
|
^, $, \b, \B,
x(?=y), x(?!y), (?<=y)x,
(?<!y)x
|
|
(x), (?<Name>x), (?:x),
\n, \k<Name>
|
|
x*, x+, x?,
x{n}, x{n,},
x{n,m}
|
ã¡ã¢: ãã£ã¨å¤§ããªæ©è¦è¡¨ãããã¾ã ï¼åå¥ã®è¨äºã®ä¸é¨ãéç´ããã ãã§ãï¼ã
ã¨ã¹ã±ã¼ã
ç¹æ®æåãæåã¨ãã¦ä½¿ãå¿
è¦ãããå ´å (ä¾ãã°ãå®éã« "*" ãæ¤ç´¢ããå ´å)ããã®åã«ããã¯ã¹ã©ãã·ã¥ãä»ãã¦ã¨ã¹ã±ã¼ããã¹ãã§ããä¾ãã°ã "a" ã« "*" ãç¶ããããã« "b" ãç¶ããã®ãæ¤ç´¢ããã«ã¯ã /a\*b/ ã¨ä½¿ç¨ãã¾ããããã¯ã¹ã©ãã·ã¥ã¯ "*" ããã¨ã¹ã±ã¼ããããç¹æ®æåã§ã¯ãªãæåã¨ãã¦æ±ãããã«ãã¾ãã
ã¡ã¢:
å¤ãã®å ´åãç¹æ®æåãç
§åãããã¨ããã¨ããã¨ã¹ã±ã¼ãã®ä»£ããã«æåã¯ã©ã¹ã§å²ããã¨ãã§ãã¾ããä¾ãã° /a[*]b/ ã®ããã«ãã¾ãã
åæ§ã«ãããæ£è¦è¡¨ç¾ãªãã©ã«ãæ¸ãã¦ãã¦ã¹ã©ãã·ã¥ ("/") ã¨ç
§åããå¿
è¦ãããå ´åã¯ãã¹ã©ãã·ã¥ãã¨ã¹ã±ã¼ãããå¿
è¦ãããã¾ãï¼ããããªãã¨ã¹ã©ãã·ã¥ã§ãã¿ã¼ã³ãçµäºãã¾ãï¼ã
ä¾ãã°ã "/example/" ã¨ããæååã¨ããã«ç¶ã 1 æå以ä¸ã®ã¢ã«ãã¡ããããæ¢ãã«ã¯ã /\/example\/[a-z]+/i ã¨ãã¾ããããããã®ã¹ã©ãã·ã¥ã®åã«ããã¯ã¹ã©ãã·ã¥ãç½®ããã¨ã«ãã£ã¦ãã¹ã©ãã·ã¥ãæåã¨ãã¦æ±ãã¾ãã
ããã¯ã¹ã©ãã·ã¥æåã¨ç
§åããã«ã¯ãããã¯ã¹ã©ãã·ã¥ãã¨ã¹ã±ã¼ãããå¿
è¦ãããã¾ãã
ä¾ãã°ã "C:\" ã¨ããæååã§ "C" ãä»»æã®è±åã«ãªãå ´åã¯ã /[A-Z]:\\/ ã使ç¨ãã¾ããæåã®ããã¯ã¹ã©ãã·ã¥ããã®æ¬¡ã®æåãã¨ã¹ã±ã¼ãããã®ã§ããã®è¡¨ç¾ã¯åä¸ã®ããã¯ã¹ã©ãã·ã¥ãæ¤ç´¢ãã¾ãã
RegExp ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æååãªãã©ã«ã渡ãã¦ä½¿ç¨ããå ´åãããã¯ã¹ã©ãã·ã¥ã¯æååãªãã©ã«ã§ã®ã¨ã¹ã±ã¼ãæåã§ããããã¨ãæãåºãã¦ãã ãããã¤ã¾ããããã¯ã¹ã©ãã·ã¥ãæ£è¦è¡¨ç¾ã§ç¨ããã«ã¯æååãªãã©ã«ã¬ãã«ã§ã¨ã¹ã±ã¼ãããå¿
è¦ãããã¾ãã
/a\*b/ 㨠new RegExp("a\\*b") ã¯åã表ç¾ãçæãããã®ã§ããã "a" ã®æ¬¡ã« "*"ããã®æ¬¡ã« "b" ããããã®ãæ¢ãã¾ãã
RegExp.escape() 颿°ã¯ãæ£è¦è¡¨ç¾ã®æ§æã«ãããç¹æ®æåããã¹ã¦ã¨ã¹ã±ã¼ãããæ°ããæååãè¿ãã¾ããããã使ç¨ãã¦ã new RegExp(RegExp.escape("a*b")) ã¨ãããã¨ã§ãæåå "a*b" ã«ã®ã¿ä¸è´ããæ£è¦è¡¨ç¾ã使ãããã¨ãã§ãã¾ãã
æ¬å¼§ã®ä½¿ç¨
æ£è¦è¡¨ç¾ãã¿ã¼ã³ã®ä¸é¨ãæ¬å¼§ã§å²ããã¨ã§ãä¸è´ããé¨åæååãè¨æ¶ãã¦ãããã¨ãã§ãã¾ãã ãã£ããè¨æ¶ãããã°ãå¾ãããã®é¨åæååãå¼ã³åºããã¨ãã§ãã¾ããããã«é¢ãã¦ã¯ã°ã«ã¼ãã¨å¾æ¹åç §ã§èª¬æãã¦ãã¾ãã
JavaScriptã§ã®æ£è¦è¡¨ç¾ã®ä½¿ãæ¹
æ£è¦è¡¨ç¾ã¯ã RegExp ã® test() 㨠exec() ã¡ã½ããã String ã® match()ãmatchAll()ãreplace()ãreplaceAll(), ãsearch()ãsplit() ã¡ã½ããã¨ã¨ãã«ä½¿ç¨ãã¾ãã
| ã¡ã½ãã | 説æ |
|---|---|
exec() |
æååå
ã§ä¸è´ãããã®ã®æ¤ç´¢ãå®è¡ãã¾ããçµææ
å ±ã®é
åãè¿ãã¾ããä¸è´ãããã®ããªããã° null ãè¿ãã¾ãã |
test() |
æååå
ã§ä¸è´ãããã®ããããæ¤æ»ãã¾ãã true ã¾ã㯠false ãè¿ãã¾ãã |
match() |
ãã£ããã£ã°ã«ã¼ããå«ãããã¹ã¦ã®ä¸è´ãããã®ãå«ãé
åãè¿ãã¾ããä¸è´ãããã®ããªãå ´å㯠null ãè¿ãã¾ãã |
matchAll() |
ãã£ããã£ã°ã«ã¼ããå«ãããã¹ã¦ã®ä¸è´ãããã®ãå«ãã¤ãã¬ã¼ã¿ã¼ãè¿ãã¾ãã |
search() |
æååå
ã§ä¸è´ãããã®ããããæ¤æ»ãã¾ããä¸è´ããä½ç½®ãè¿ãã¾ããæ¤ç´¢ã«å¤±æããå ´å㯠-1 ãè¿ãã¾ãã |
replace() |
æååå ã§ä¸è´ãããã®ãä¸ã¤æ¤ç´¢ããä¸è´ããé¨åæååãç½®æããé¨åæååã§ç½®æãã¾ãã |
replaceAll() |
æååå ã§ä¸è´ãããã®ãã¹ã¦ãæ¤ç´¢ããä¸è´ããé¨åæååãç½®æããé¨åæååã§ç½®æãã¾ãã |
split() |
æ£è¦è¡¨ç¾ã¾ãã¯åºå®æååãç¨ãã¦æååãåå²ããé¨åæååã®é åã«å ¥ãã¾ãã |
ãããã¿ã¼ã³ãæååã«åå¨ããããç¥ãããã¨ãã¯ãtest() ã¾ã㯠search() ã¡ã½ããã使ç¨ãã¦ãã ãããè©³ç´°ãªæ
å ±ãç¥ãããã¨ãã¯ï¼å®è¡æéãé·ããªãã¾ããï¼ exec() ã¾ã㯠match() ã¡ã½ããã使ç¨ãã¦ãã ããã
exec() ã match() ã使ç¨ãã¦ä¸è´ããå ´åããããã®ã¡ã½ããã¯é
åãè¿ããé¢é£ããæ£è¦è¡¨ç¾ãªãã¸ã§ã¯ãã¨å®ç¾©æ¸ã¿ãªãã¸ã§ã¯ãã§ãã RegExp ãªãã¸ã§ã¯ãã®ããããã£ãæ´æ°ãã¾ãã
ä¸è´ããªãã£ãå ´åã exec ã¡ã½ãã㯠null ï¼false ã«å¤æãããå¤ï¼ãè¿ãã¾ãã
次ã®ä¾ã§ã¯ãexec() ã¡ã½ããã使ç¨ãã¦æååãæ¤ç´¢ãã¾ãã
const myRe = /d(b+)d/g;
const myArray = myRe.exec("cdbbdbsbz");
æ£è¦è¡¨ç¾ã®ããããã£ã«ã¢ã¯ã»ã¹ããå¿
è¦ããªãå ´åã myArray ã使ããããä¸ã¤ã®æ¹æ³ã¯ãã®ã¹ã¯ãªããã®éãã§ãã
const myArray = /d(b+)d/g.exec("cdbbdbsbz");
// 'cdbbdbsbz'.match(/d(b+)d/g) ã¨åæ§ããã ãã
// 'cdbbdbsbz'.match(/d(b+)d/g) ã¯é
å [ "dbbd" ] ãåºåããã®ã«å¯¾ãã
// /d(b+)d/g.exec('cdbbdbsbz') ã¯é
å [ 'dbbd', 'bb', index: 1, input: 'cdbbdbsbz' ] ãåºåããã
ï¼ç°ãªãåä½ã«ã¤ãã¦ã®è©³ããæ
å ±ã¯ exec() ã«ãããã°ãã¼ãã«æ¤ç´¢ãã©ã°ã®ä½¿ç¨ãåç
§ãã¦ãã ãããï¼
ããæååããæ£è¦è¡¨ç¾ãçµã¿ç«ã¦ããå ´åã¯ã次ã®ã¹ã¯ãªããã®ãããªæ¹æ³ãããã¾ãã
const myRe = new RegExp("d(b+)d", "g");
const myArray = myRe.exec("cdbbdbsbz");
ãããã®ã¹ã¯ãªããã§ã¯ä¸è´ãããã®ãããã¨ãé åãè¿ãã¨ã¨ãã«æ¬¡è¡¨ã§ç¤ºãããããããã£ãæ´æ°ãã¾ãã
| ãªãã¸ã§ã¯ã | ããããã£ã¾ãã¯ã¤ã³ããã¯ã¹ | 説æ | ãã®ä¾ã®å ´å |
|---|---|---|---|
myArray |
ä¸è´ããæååã¨ããã¹ã¦ã®è¨æ¶ãããé¨åæååã§ãã | ['dbbd', 'bb', index: 1, input: 'cdbbdbsbz'] |
|
index |
å ¥åæååã§ä¸è´ããä½ç½®ã示ãã0 ããå§ã¾ãä½ç½®ã§ãã | 1 |
|
input |
å ã®æååã§ãã | 'cdbbdbsbz' |
|
[0] |
æå¾ã«ä¸è´ããæååã§ãã | 'dbbd' |
|
myRe |
lastIndex |
æ¬¡ã®æ¤ç´¢ãå§ã¾ãä½ç½®ã§ãã ï¼ãã®ããããã£ã¯ãg ãªãã·ã§ã³ãç¨ããæ£è¦è¡¨ç¾ã§ã®ã¿ã»ããããã¾ãã ããã«ã¤ãã¦ã¯ãã©ã°ãç¨ããé«åº¦ãªæ¤ç´¢ã§èª¬æãã¾ããï¼ | 5 |
source |
ãã¿ã¼ã³ã®ããã¹ãã§ããæ£è¦è¡¨ç¾ã®å®è¡æã§ã¯ãªã使æã«æ´æ°ããã¾ãã | 'd(b+)d' |
ãã®ä¾ã® 2 ã¤ç®ã®å½¢å¼ã§ç¤ºããããã«ããªãã¸ã§ã¯ãåæååã§ä½æããæ£è¦è¡¨ç¾ã¯ã夿°ã«ä»£å ¥ããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã ããããããããã¨åºç¾ãããã³ã«æ°ããæ£è¦è¡¨ç¾ã«ãªãã¾ãã ãã®ããã夿°ã«ä»£å ¥ããã«ãã®å½¢å¼ã使ç¨ããã¨ããã®å¾ããã®æ£è¦è¡¨ç¾ã®ããããã£ã«ã¢ã¯ã»ã¹ã§ãã¾ããã ä¾ãã°ã次ã®ãããªã¹ã¯ãªãããããã¨ãã¾ãã
const myRe = /d(b+)d/g;
const myArray = myRe.exec("cdbbdbsbz");
console.log(`lastIndex ã®å¤ã¯ ${myRe.lastIndex} ã§ã`);
// "lastIndex ã®å¤ã¯ 5 ã§ã"
ãããããã®ã¹ã¯ãªããã®å ´åã¯æ¬¡ã®ããã«ãªãã¾ãã
const myArray = /d(b+)d/g.exec("cdbbdbsbz");
console.log(`lastIndex ã®å¤ã¯ ${/d(b+)d/g.lastIndex} ã§ã`);
// "lastIndex ã®å¤ã¯ 0 ã§ã"
ãã® 2 ã¤ã®æä¸ã® /d(b+)d/g ã¯ç°ãªãæ£è¦è¡¨ç¾ãªãã¸ã§ã¯ãã§ããããã lastIndex ããããã£ã®å¤ãç°ãªãã¾ãã
ãªãã¸ã§ã¯ãåæååã§ä½æããæ£è¦è¡¨ç¾ã®ããããã£ã«ã¢ã¯ã»ã¹ããå¿
è¦ãããå ´åã¯ãã¾ããã®æ£è¦è¡¨ç¾ã夿°ã«ä»£å
¥ããå¿
è¦ãããã¾ãã
ãã©ã°ãç¨ããé«åº¦ãªæ¤ç´¢
æ£è¦è¡¨ç¾ã«ã¯ãã°ãã¼ãã«æ¤ç´¢ã大æåå°æåãåºå¥ããªãæ¤ç´¢ãªã©ã®æ©è½ãå®ç¾ãã 6 種é¡ã®ãªãã·ã§ã³ãã©ã°ãããã¾ãã ãããã®ãã©ã°ã¯ãåå¥ã«ä½¿ç¨ãããã¨ãä¸ç·ã«ä½¿ç¨ãããã¨ãã§ããé åºã¯åãã¾ãããæ£è¦è¡¨ç¾ã®ä¸é¨ã«å«ã¾ãã¾ãã
| ãã©ã° | 説æ | 対å¿ãããããã㣠|
|---|---|---|
d |
ä¸è´ããé¨åæååã®ä½ç½®ãçæãã¾ãã | hasIndices |
g |
ã°ãã¼ãã«æ¤ç´¢ãè¡ãã¾ãã | global |
i |
大æåã»å°æåãåºå¥ããªãæ¤ç´¢ã§ãã | ignoreCase |
m |
^ 㨠$ ããæååå
¨ä½ã§ã¯ãªãããããã®è¡ã®å
é ã¨æ«å°¾ã«ä¸è´ããããã«ãã¾ãã |
multiline |
s |
. ãæ¹è¡æåã«ä¸è´ããããã«ãã¾ãã |
dotAll |
u |
"unicode" ã§ãããã¿ã¼ã³ãä¸é£ã® Unicode ã³ã¼ããã¤ã³ãã¨ãã¦æ±ãã¾ãã | unicode |
v |
Unicodeã®æ©è½ãããã«è¿½å ããã u ã¢ã¼ãã®ã¢ããã°ã¬ã¼ãã |
unicodeSets |
y |
対象æååã®ç¾å¨ã®ä½ç½®ããå§ã¾ãé¨åã«ä¸è´ãããã®ãæ¢ããå é åºå®ã (sticky) æ¤ç´¢ãè¡ãã¾ãã | sticky |
ãã©ã°ãæ£è¦è¡¨ç¾ã«å«ããã«ã¯ã次ã®ããã«ãã¦ãã ããã
const re = /pattern/flags;
ã¾ãã¯
const re = new RegExp("pattern", "flags");
ãã©ã°ã¯æ£è¦è¡¨ç¾ãä½ãéã«ãªãã¦ã¯ãªããªããã®ã§ãããã¨ã«æ³¨æãã¦ãã ãããå¾ããå ãããåãé¤ããããããã¨ã¯ã§ãã¾ããã
ä¾ãã° re = /\w+\s/g ã¯ã1 å以ä¸ã®æåã¨ããã«ç¶ãã¹ãã¼ã¹ãæ¢ãæ£è¦è¡¨ç¾ã使ãã¾ããã¾ããæ£è¦è¡¨ç¾ã¯æååå
¨ä½ãéãã¦ãã®çµã¿åãããæ¢ãã¾ãã
const re = /\w+\s/g;
const str = "fee fi fo fum";
const myArray = str.match(re);
console.log(myArray);
// ["fee ", "fi ", "fo "]
ãã®ä¾ã§ã¯ãã®è¡ã
const re = /\w+\s/g;
ããã®è¡ã
const re = new RegExp("\\w+\\s", "g");
ã«ç½®ãæãããã¨ãã§ãã¾ããå¾ãããçµæã¯åãã§ãã
m ãã©ã°ã¯ãè¤æ°è¡ã®å
¥åæååãè¤æ°è¡ã¨ãã¦æ±ããã¨ãæå®ããããã«ä½¿ç¨ãã¾ãã
m ãã©ã°ã使ç¨ããã¨ã ^ 㨠$ ã¯ãæååå
¨ä½ã§ã¯ãªããå
¥åæååå
ã®ä»»æã®è¡ã®å
é ã¾ãã¯æ«å°¾ã«ä¸è´ãã¾ãã
i, m, s ãã©ã°ã¯ãæ£è¦è¡¨ç¾ã®ç¹å®ã®é¨åã«å¯¾ãã¦ãä¿®é£¾åæ§æã使ç¨ãã¦æå¹ã¾ãã¯ç¡å¹ã«ãããã¨ãã§ãã¾ãã
exec() ã«ãããã°ãã¼ãã«æ¤ç´¢ãã©ã°ã®ä½¿ç¨
RegExp.prototype.exec() ã¡ã½ããã« g ãã©ã°ãä»ããã¨ãããããä¸è´ããå¤ã¨ãã®ä½ç½®ãç¹°ãè¿ãè¿ãã¾ãã
const str = "fee fi fo fum";
const re = /\w+\s/g;
console.log(re.exec(str)); // ["fee ", index: 0, input: "fee fi fo fum"]
console.log(re.exec(str)); // ["fi ", index: 4, input: "fee fi fo fum"]
console.log(re.exec(str)); // ["fo ", index: 7, input: "fee fi fo fum"]
console.log(re.exec(str)); // null
ããã«å¯¾ãã¦ã String.prototype.match() ã¡ã½ããã¯ããã¹ã¦ã®ä¸è´å¤ãä¸åº¦ã«è¿ãã¾ããããã®ä½ç½®ã¯å«ã¾ãã¾ããã
console.log(str.match(re)); // ["fee ", "fi ", "fo "]
Unicode æ£è¦è¡¨ç¾ã®ä½¿ç¨
u ãã©ã°ã¯ "unicode" æ£è¦è¡¨ç¾ã使ããããã«ä½¿ããã¾ããã¤ã¾ãã Unicode ããã¹ãã«ä¸è´ããããã«å¯¾å¿ãã¦ããæ£è¦è¡¨ç¾ã§ããUnicode ã¢ã¼ãã§æå¹ã«ãªãéè¦ãªæ©è½ã¯ã Unicode ããããã£ã¨ã¹ã±ã¼ãã§ããä¾ãã°ã次ã®ãããªæ£è¦è¡¨ç¾ã使ç¨ãã¦ãä»»æã® Unicode ã®ãèªãã¨ç
§åãããã¨ãã§ãã¾ãã
/\p{L}*/u;
Unicode ã®æ£è¦è¡¨ç¾ã¯ãåæ§ã«ç°ãªãåä½ããã¾ãã RegExp.prototype.unicode ã«ã¯ãããã«é¢ãããã詳ãã説æãããã¾ãã
ä¾
ã¡ã¢: è¤æ°ã®ä¾ã次ã®å ´æã«ããã¾ãã
exec()ãtest()ãmatch()ãmatchAll()ãsearch()ãreplace()ãsplit()ã®ãªãã¡ã¬ã³ã¹ãã¼ã¸- ã¬ã¤ãè¨äºã®æåã¯ã©ã¹ãã¢ãµã¼ã·ã§ã³ãã°ã«ã¼ãã¨å¾æ¹åç §ãæ°éå
ç¹æ®æåãç¨ããå ¥åã®ç¢ºèª
次ã®ä¾ã§ã¯ãã¦ã¼ã¶ã¼ãé»è©±çªå·ãå ¥åãããã¨ãæ³å®ãã¦ãã¾ãã ã¦ã¼ã¶ã¼ã [ãã§ãã¯] ãã¿ã³ãæ¼ãã¨ãã¹ã¯ãªããã¯ãã®çªå·ã®æå¹æ§ããã§ãã¯ãã¾ãã çªå·ãæå¹ãªå ´å (æ£è¦è¡¨ç¾ã§æå®ãããæååã«ä¸è´ããå ´å)ãã¹ã¯ãªããã¯ã¦ã¼ã¶ã¼ã¸ã®æè¬ã¨çªå·ã®ç¢ºèªã示ãã¡ãã»ã¼ã¸ã表示ãã¾ãã çªå·ãç¡å¹ãªå ´åãã¹ã¯ãªããã¯ã¦ã¼ã¶ã¼ã«é»è©±çªå·ãç¡å¹ã§ãããã¨ãéç¥ãã¾ãã
ãã®æ£è¦è¡¨ç¾ã¯æ¬¡ã®ãã®ãæ¢ãã¾ãã
- ãã¼ã¿ã®è¡ã®å
é :
^ - 3 æ¡ã®æ°å
\d{3}ã¾ãã¯|å·¦æ¬å¼§\(ã®æ¬¡ã« 3 æ¡ã®æ°å\d{3}ã®æ¬¡ã«éãæ¬å¼§\)ã§ãããã¯ãã£ããã£ã°ã«ã¼ãã§ãªããã®(?:)ã«å ¥ã£ã¦ãã¾ãã - ç¶ãã¦ããã·ã¥ 1 ã¤ãã¹ã©ãã·ã¥ãå°æ°ç¹ã®ãã¡ã®ä½ããããã£ããã£ã°ã«ã¼ã
()ã«å ¥ã£ã¦ãããã® - ç¶ã㦠3 æ¡ã®æ°å
\d{3} - ç¶ã㦠(æåã®) ãã£ããã£ã°ã«ã¼ãå
ã§è¨æ¶ããã¦ãããã®ã«ä¸è´ãããã®
\1 - ç¶ã㦠4 æ¡ã®æ°å
\d{4} - ç¶ãã¦ãã¼ã¿ã®è¡ã®æ«å°¾:
$
HTML
<p>
é»è©±çªå·ï¼å¸å¤å±çªå«ãï¼ãå
¥åã㦠"ãã§ãã¯" ãã¯ãªãã¯ãã¦ãã ããã
<br />
é©åãªå½¢å¼ã¯ ###-###-#### ãªã©ã§ãã
</p>
<form id="form">
<input id="phone" />
<button type="submit">ãã§ãã¯</button>
</form>
<p id="output"></p>
JavaScript
const form = document.querySelector("#form");
const input = document.querySelector("#phone");
const output = document.querySelector("#output");
const re = /^(?:\d{3}|\(\d{3}\))([-/.])\d{3}\1\d{4}$/;
function testInfo(phoneInput) {
const ok = re.exec(phoneInput.value);
output.textContent = ok
? `ãããã¨ããããªãã®é»è©±çªå·ã¯ ${ok[0]}`
: `${phoneInput.value} ã¯å¸å¤å±çªä»ãé»è©±çªå·ã§ã¯ããã¾ããï¼`;
}
form.addEventListener("submit", (event) => {
event.preventDefault();
testInfo(input);
});
çµæ
ãã¼ã«
- RegExr
-
æ£è¦è¡¨ç¾ãå¦ã³ãæ§ç¯ãããã¹ãããããã®ãªã³ã©ã¤ã³ãã¼ã«ã§ãã
- Regex tester
-
ãªã³ã©ã¤ã³æ£è¦è¡¨ç¾ãã«ãã¼/ãããã¬ã¼
- Regex interactive tutorial
-
ãªã³ã©ã¤ã³ã®ã¤ã³ã¿ã©ã¯ãã£ããªãã¥ã¼ããªã¢ã«ãæ©è¦è¡¨ããã¬ã¤ã°ã©ã¦ã³ãã
- Regex visualizer
-
ãªã³ã©ã¤ã³ã®ãã¸ã¥ã¢ã«ãªæ£è¦è¡¨ç¾ãã¹ã¿ã¼ã§ãã