JSFiddle - React, Tailwind, and code Playground
by ukyo
JavaScript
var words = [
'abcdef',
'aaa_______',
'______bbb',
'ccc',
'___ddd___',
'aa_____dd',
'JavaScript',
'javascript',
'ジャバスクリプト',
'ジャヴァスクリプト',
'ジャバスプリクト',
' js',
' JS '
];
var tree = {
type: 'or',
children: [
{
type: 'and',
children: [
{
type: 'rule',
op: 'startsWith',
text: 'ab'
},
{
type: 'rule',
op: 'endsWith',
text: 'ef'
},
{
type: 'rule',
op: 'strictEqual',
text: 'abcdef'
},
{
type: 'rule',
op: 'includes',
text: 'bcde'
},
{
type: 'rule',
op: 'regexp',
text: '^a.+f$'
},
]
},
{
type: 'and',
children: [
{
type: 'rule',
op: 'notStartsWith',
text: 'aaa'
},
{
type: 'rule',
op: 'notEndsWith',
text: 'bbb'
},
{
type: 'rule',
op: 'notStrictEqual',
text: 'ccc'
},
{
type: 'rule',
op: 'notIncludes',
text: 'ddd'
},
{
type: 'rule',
op: 'notRegexp',
text: '^aa.+dd$'
},
]
},
{
type: 'or',
children: [
{
type: 'rule',
op: 'regexp',
text: '^\s*[Jj]ava[Ss]cript\s*$'
},
{
type: 'rule',
op: 'regexp',
text: '^\s*ジャ(ヴァ|バ)スクリプト\s*$'
},
{
type: 'rule',
op: 'regexp',
text: '^\s*JS|js\s*$'
},
]
}
]
}
var filter1 = (tree, s) => {
var i, n;
switch (tree.type) {
case 'and':
for (var i = 0, n = tree.children.length; i < n; i++) {
if (!filter1(tree.children[i], s)) return false;
}
return true;
case 'or':
for (var i = 0, n = tree.children.length; i < n;...