Elaine's Blog 朝著 senior 前進的工程師

JavaScript 正規表達式

2018-03-14

正規表達式 Regular Expression,簡寫 regex、regexp 都可

普通字元

var regexp = /a/;
var str = "This is a apple";
console.log(regexp.test(str)); //true

特殊字元

特殊字元 [\^$.|?*+() 前要用反斜線 \

var regexp = /if\(true\)/;
var str = "if(true) { doSomething() }";
console.log(regexp.test(str)); //true
var regexp = /\+/;
var str = "1+1=2";
console.log(regexp.test(str)); //true

任意字元

. 來代表可以接受任意字元

var regexp = /h.o/;

var str1 = "hao";
console.log(regexp.test(str1)); //true

var str2 = "h o";
console.log(regexp.test(str2)); //true

var str1 = "hello";
console.log(regexp.test(str1)); //false

var str3 = "ho";
console.log(regexp.test(str3)); //false

多個字元

[] 匹配中括號內所有字元

var regexp = /[ab]/;

var str1 = "abc";
console.log(regexp.test(str1)); //true

var str2 = "apple";
console.log(regexp.test(str2)); //true

var str1 = "banana";
console.log(regexp.test(str1)); //true

var str3 = "cccc";
console.log(regexp.test(str3)); //false
  • [a-z] 所有小寫英文字母 a ~ z
  • [a-zA-Z] 所有大小寫英文字母 a ~ z 或 A ~ Z
  • [0~9] 數字 0 ~ 9
  • [^a] 不是 a 的字
  • [^0~9] 不是所有數字

縮寫

  • \w 所有字母,等同於 [a-zA-Z]
  • \d 所有數字,等同於 [0~9]
  • \s space,等同於 [\n\r\t]
  • \W 不是字母,等同於 [^\w]
  • \D 不是數字,等同於 [^\d]
  • \S 不是 space,等同於 [^\s]

出現次數

  • * 任意次數
  • + 至少 1 次
  • ? 零或 1 次
  • {2} 最少 2 次
  • {3,10} 最少 3 次且最多 10 次

開頭結尾

  • ^ 開頭
  • $ 結尾
var regexp = /^He/;

var str1 = "Hello";
console.log(regexp.test(str1)); //true

var str2 = "YoYo Hello";
console.log(regexp.test(str2)); //false
var regexp = /o$/;

var str1 = "Hello";
console.log(regexp.test(str1)); //true

var str2 = "Hello Elaine";
console.log(regexp.test(str2)); //false

參考資料


Similar Posts

上一篇 Insertion Sort

Content