我想在以下情况下拆分字符串:
quatre
或soixante
AND dix
或vingt
例如:
'deux-cent-quatre-vingt-trois'.split(/**/);
> ['deux', 'cent', 'quatre-vingt', 'trois' ]
我有过一些尝试和失败,例如:
'deux-cent-quatre-vingt-dix-trois'
.split(/^(?![quatre|soixante]-[dix|vingt])(\w*)-(\w*)/);
> [ '', 'deux', 'cent', '-quatre-vingt-trois' ]
或:
'deux-cent-quatre-vingt-dix-trois'.split(/(?!quatre|soixante)-(?!vingt|dix)/);
> [ 'deux' 'cent', 'quatre-vingt', 'trois' ]
有效,但事实并非如此:
'cent-vingt'.split(/(?!quatre|soixante)-(?!vingt|dix)/);
> [ 'cent-vingt' ]
我知道使用匹配器或发现会很容易,但是只需一次拆分就可以了...
答案 0 :(得分:1)
你可以这样做:
var text = "deux-cent-quatre-vingt-trois";
console.log(text.split(/(?:^|-)(quatre-vingt(?:-dix|s$)?|soixante-dix|[^-]+)/));
我们的想法是添加一个捕获组,其内容将添加到拆分列表中。
捕获组首先包含特定情况,最常见后包含[^-]+
(所有不是-
)
注意:由于quatre-vingt
写的s
没有后跟数字,所以我添加了s$
。