javascript |使用正则表达式替换字符串
我有一个类字符串:javascript |使用正则表达式替换字符串,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,我有一个类字符串:width-100必需验证电子邮件验证唯一电子邮件输入成功 并希望找到(特殊格式的)子字符串。 结果应该是:validate email validate unique email 我的代码: var ok = "width-100 required validate-email validate-unique-email input-success".replace(/validate-([A-Z]+)/gi, function(match, $1, $2) { ret
width-100必需验证电子邮件验证唯一电子邮件输入成功
并希望找到(特殊格式的)子字符串。
结果应该是:validate email validate unique email
我的代码:
var ok = "width-100 required validate-email validate-unique-email input-success".replace(/validate-([A-Z]+)/gi, function(match, $1, $2) {
return $1;
});
console.log(ok);
但这不起作用。哪里有错误?
谢谢
试试这个。这将捕获单词匹配
您可以在这里使用前瞻
/\bvalidate-([A-Z-]+)(?= |$)/gi
例如:
> var str = "width-100 required validate-email validate-unique-email input-success";
undefined
> console.log(str.match(/\bvalidate-([A-Z-]+)(?= |$)/gi).join(' '));
validate-email validate-unique-email
您可以执行以下操作: 代码 输出 注
在本例中,
replace
仅用于迭代匹配项,而不是真正用于替换str
的实际位。这对我来说很有效,您实际上不需要替换,这就是我使用String.prototype.match
的原因
var str = "width-100 required validate-email validate-unique-email input-success";
console.log(str.match(/\bvalidate-([a-z]+)/gi).join(' '));
如果您在最后忽略了这个案例,那么为什么必须使用[A-Z]+,难道[A-Z]+还不够吗?我确实可以早些更改它,但字符串编辑问题告诉我它有同样的成本:p@mario23很抱歉拒绝了您的编辑,但在OP的意图中,
“验证”
似乎也是一个可能的大小写字符串
var ok=[];
var str = 'width-100 required validate-email validate-unique-email input-success';
str.replace(/(\bvalidate-\w+\b)/gi, function(match) {
ok.push(match);
});
console.log(ok);
['validate-email', 'validate-unique']
var str = "width-100 required validate-email validate-unique-email input-success";
console.log(str.match(/\bvalidate-([a-z]+)/gi).join(' '));