正規表現メモ
正規表現構文の早見とよく使うパターンリファレンス。文字クラス・量指定子・アンカー・先読みなどを網羅。 完全無料・会員登録不要・ブラウザ内ローカル処理・アップロード不要。
Character Classes
[abc]Any of a, b, or c/[aeiou]/.test('a') → trueクリックでコピー[^abc]Not a, b, nor c/[^aeiou]/.test('b') → trueクリックでコピー[a-z]Character range a to z/[a-z]/.test('m') → trueクリックでコピー.Any character except newline/./.test('x') → trueクリックでコピー\dDigit [0-9]/\d/.test('5') → trueクリックでコピー\DNon-digit [^0-9]/\D/.test('a') → trueクリックでコピー\wWord character [a-zA-Z0-9_]/\w/.test('_') → trueクリックでコピー\WNon-word character/\W/.test('!') → trueクリックでコピー\sWhitespace/\s/.test(' ') → trueクリックでコピー\SNon-whitespace/\S/.test('a') → trueクリックでコピーQuantifiers
*0 or more/go*/.test('g') → trueクリックでコピー+1 or more/go+/.test('go') → trueクリックでコピー?0 or 1 (optional)/colou?r/.test('color') → trueクリックでコピー{n}Exactly n/a{3}/.test('aaa') → trueクリックでコピー{n,}n or more/a{2,}/.test('aaa') → trueクリックでコピー{n,m}Between n and m/a{2,4}/.test('aaa') → trueクリックでコピー*?0 or more (lazy)/a*?/.exec('aaa') → ''クリックでコピー+?1 or more (lazy)/a+?/.exec('aaa') → 'a'クリックでコピーAnchors
^Start of string/^hello/.test('hello world') → trueクリックでコピー$End of string/world$/.test('hello world') → trueクリックでコピー\bWord boundary/\bword\b/.test('a word b') → trueクリックでコピー\BNon-word boundary/\Bord\B/.test('word') → falseクリックでコピーGroups & Capturing
(abc)Capture group/(ab)c/.exec('abc')[1] → 'ab'クリックでコピー(?:abc)Non-capturing group/(?:ab)c/.exec('abc')[1] → undefinedクリックでコピー(?<name>abc)Named capture group/(?<w>ab)c/.exec('abc').groups.w → 'ab'クリックでコピー\1Backreference to group 1/(a)\1/.test('aa') → trueクリックでコピー$1Replacement reference'ab'.replace(/(a)/, '$1x') → 'axb'クリックでコピーLookaround Assertions
(?=abc)Positive lookahead/a(?=b)/.test('ab') → trueクリックでコピー(?!abc)Negative lookahead/a(?!b)/.test('ac') → trueクリックでコピー(?<=abc)Positive lookbehind/(?<=a)b/.test('ab') → trueクリックでコピー(?<!abc)Negative lookbehind/(?<!a)b/.test('cb') → trueクリックでコピーFlags
gGlobal — find all matches'aaa'.replace(/a/g, 'b') → 'bbb'クリックでコピーiCase-insensitive/a/i.test('A') → trueクリックでコピーmMultiline (^/$ match line ends)/^b/m.test('a\nb') → trueクリックでコピーsDotall (. matches newline)/a.b/s.test('a\nb') → trueクリックでコピーuUnicode/\u{1F600}/u.test('😀') → trueクリックでコピーySticky (match at lastIndex)/a/y.exec('aaa') → 'a' at 0クリックでコピーCommon Patterns
^[\w.-]+@[\w.-]+\.\w+$Email (basic)/^[\w.-]+@[\w.-]+\.\w+$/.test('a@b.com') → trueクリックでコピー^https?://[\S]+$URL (basic)/^https?:\/\/[\S]+$/.test('http://x') → trueクリックでコピー^\d{4}-\d{2}-\d{2}$Date YYYY-MM-DD/^\d{4}-\d{2}-\d{2}$/.test('2024-01-01') → trueクリックでコピー^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$Hex color/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test('#fff') → trueクリックでコピー^\d+$Integer only/^\d+$/.test('123') → trueクリックでコピー^-?\d+(\.\d+)?$Decimal number/^-?\d+(\.\d+)?$/.test('-3.14') → trueクリックでコピー^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$Strong password (8+ chars, upper, lower, digit)test('Abc12345') → trueクリックでコピー