利用正則表達式能夠來進行某些須要整除操做的判斷,例如:奇偶性,質數合數等。javascript
PS:本文建議有必定正則基礎的看,須要瞭解基本的正則,回溯,貪心等。java
判斷偶數:首先把數字n轉化爲重複n次1的字符串,而後經過正則的匹配判斷該字符串是不是多個或則0個(0也是偶數)重複的11字符串。正則表達式
function isEven(n) { return /^(11)*$/.test('1'.repeat(n)); } isEven(0); // true isEven(1); // false isEven(2); // true
PS:固然,因爲repeat的緣由僅限於非負整數的判斷。code
判斷奇數:奇數和偶數互逆,加一個非就好了。ip
function isOdd(n) { return !/^(11)*$/.test('1'.repeat(n)); } isEven(0); // false isEven(1); // true isEven(2); // false
判斷合數:同上轉換爲字符串。而後經過正則匹配是否由2個及以上重複的字符串'11...'(1的個數也必須是2個及以上,能被1整除的不必定是合數)。字符串
function isNotPrime(n) { return /^(11+?)\1+$/.test('1'.repeat(n)) } isNotPrime(0); isNotPrime(1); isNotPrime(2); isNotPrime(3); isNotPrime(5); // false isNotPrime(4); isNotPrime(6); isNotPrime(8); isNotPrime(9); isNotPrime(10); // true
判斷質數:質數和合數在除開0,1的狀況下的天然數來看是互逆的,那麼只須要給0,1特殊處理便可。io
function isPrime(n) { return !/^1?$|^(11+?)\1+$/.test('1'.repeat(n)) } isPrime(2); isPrime(3); isPrime(5); isPrime(7); isPrime(11); isPrime(13);// true isPrime(0); isPrime(1);isPrime(4); isPrime(6); isPrime(8); isPrime(9); isPrime(10); // false