我试图找出它如何检查字符串是否在字符串中有三个升序字母和/或数字.例如,如果一个字符串有"manabcrt"然后有"abc"或"castle567",则字符串中有"567"或"castlexyzand789"它有"xyz"和789 ......所以我想检查一下.我发现这个小提琴,但它正在为重复的字母做.
这是小提琴的代码:
var inputs = [
'helloworld',
'hellloworld',
'aaabc',
'abcddd',
'bbabba'];
var violators = [];
inputs.forEach(function(input) {
if (/(.)\1\1/.test(input)) {
violators.push(input);
}});
alert("VIOLATORS:\n" + violators.join('\n'));
Run Code Online (Sandbox Code Playgroud)
这是一个乏味的练习,但您可能最好在正则表达式中拼出所有可能的三元组 ( 10 + 2*26 ),测试它们的存在:
(012|123|234|345|456|567|678|789|890|901|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|yza|zab|ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ|YZA|ZAB)
Run Code Online (Sandbox Code Playgroud)
当然,这种方法在非拉丁字符上失败。
请参阅现场演示 (Regex101)。
要在您的代码中使用它,请替换
if (/(.)\1\1/.test(input)) {
violators.push(input);
}});
Run Code Online (Sandbox Code Playgroud)
和
if (/(012|123|234|345|456|567|678|789|890|901|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|yza|zab|ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ|YZA|ZAB)/.test(input)) {
violators.push(input);
}});
Run Code Online (Sandbox Code Playgroud)
您可以通过计算升序对来检查值.
var array = ['manabcrt', 'castle567', , 'castlexyzand789', 'helloworld', 'hellloworld', 'aaabc', 'abcddd', 'bbabba'],
check = array.filter(s => {
var v = 1;
return [...s].some((c, i, a) => {
v *= parseInt(c, 36) + 1 === parseInt(a[i + 1], 36);
return ++v === 3;
});
});
console.log(check);Run Code Online (Sandbox Code Playgroud)
一些调整案件'90'和不包括'9a'
var array = ['zab', '901', '9ab', 'manabcrt', 'castle567', , 'castlexyzand789', 'helloworld', 'hellloworld', 'aaabc', 'abcddd', 'bbabba'],
check = array.filter(s => {
var v = 1;
return [...s].some((c, i, a) => {
var l = parseInt(c, 36),
r = parseInt(a[i + 1], 36);
v *= l + 1 === r && l !== 9 && r !== 10 || l === 9 && r === 0 || l === 35 && r === 10;
return ++v === 3;
});
});
console.log(check);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |