freeCodeCamp の Regular Expressions に関するレッスンのメモ。 Regular Expressions | freeCodeCamp
基本
- regex もデータ型の一つ
.test()メソッド:regex.test(テストしたいString);の形でチェックできる
let testStr = "somethingToTest";
let testRegex = /Test/;
testRegex.test(testStr);
// Returns true
-
.match()メソッド:string.match(regex);でマッチしたStringを取り出す
Flag
/freecodecamp/iのiの部分をflagという- i は大文字小文字どちらもマッチするようにするflag (case insensitive flag)
- g は何回でもマッチするようにするflag (global flag)
/freecodecamp/giみたいに複数書ける
よく使いそうなもの
.: wildcard character 何にでもマッチする[aiu]: a, i, u のどれにでもマッチする[a-z]: a から z の範囲の文字にマッチする[a-z0-9]: a-zと0-9の全て[^aeiou]: a, e, i, o, u 以外の 文字にマッチする- ※けど、., !, [, @, / と white space にはマッチしない(何故?)
- → そもそも
[]が示すのが character set だからかな?そこに記号は含まれてない?
[^something]は、character set からsomethingを除外する[]の外で^が使われたときは意味が変わる。[]の外の^→Stringの最初でだけマッチする
shorthand character classes
\w:[A-Za-z0-9_]と同じ(全てのアルファベット大文字小文字、数字、とアンダーバー) (="alphanumeric characters" というのはこれっぽい?)\W: 上の逆。[^A-Za-z0-9_]
\d:[0-9]\D: 上の逆。[^0-9]
a+: aが1回以上続けて出てくるa*: aが0回位以上続けて出てくる(下の例の/t[a-z]*?i/で"ti"にマッチさせるときに効果を発揮する)
- Regular expressions はデフォルトでは greedy match (一番長いものにマッチする)
?でlazy match(一番短いものにマッチする)にできる
let text = "titanic";
text.match(/t[a-z]*i/); // ["titani"]
text.match(/t[a-z]*?i/); // ["ti"]
※上記の例はfreeCodeCampより
チェックツール
正規表現のチェックができるツール
Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
0 件のコメント:
コメントを投稿