Created
August 12, 2015 09:31
-
-
Save zbinlin/0a04ab6a1e4a9b1120c4 to your computer and use it in GitHub Desktop.
RegExp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let permut = (arr) => { | |
if (typeof arr === "string") { | |
arr = arr.split(""); | |
} | |
if (arr.length === 1) { | |
return arr; | |
} | |
let rst = []; | |
for (let i = 0, len = arr.length; i < len; i++) { | |
let newArr = arr.slice(); | |
let ch = newArr.splice(i, 1)[0]; | |
permut(newArr).forEach(item => { | |
rst.push("" + ch + item); | |
}); | |
} | |
return rst; | |
}; | |
/* 给定的一个字符串(长度为 4),测试是否包含 "gimy"(位置不定)*/ | |
let re1 = /([gimy])(?!\1)([gimy])(?!(?:\1|\2))([gimy])(?!(?:\1|\2|\3))([gimy])/; | |
let arr1 = permut("gimy"); | |
for (let i = 0, len = arr1.length; i < len; i++) { | |
console.assert(re1.test(arr1[i])) | |
} | |
/* 给定的一个字符串(长度不大于 4,可以为空),测试是否包含 "gimy"(位置不定)*/ | |
let re2 = /^(?:([gimy]))?(?:(?!\1)([gimy]))?(?:(?!(?:\1|\2))([gimy]))?(?:(?!(?:\1|\2|\3))([gimy]))?$/; | |
let arr2 = permut("gimy"); | |
for (let i = 0, len = arr2.length; i < len; i++) { | |
console.assert(re2.test(arr2[i])) | |
} | |
console.assert(re2.test("")); | |
console.assert(re2.test("ig")); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment