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 件のコメント:
コメントを投稿