javascript正则表达式在不包围文本时捕获单引号

时间:2016-03-04 02:29:29

标签: javascript regex

当我们没有封装其他文本时,我试图捕获双引号。

我的目标是'你好''世界''

我试过用过!不是在文本上,但那不起作用,我怎么能抓住这个?

var str = "hello '' ''world''"

// > hello '' ''world'' 
console.log(str.replace( /''![a-z]{1,}''/g),'');

// > hello  world
console.log(str.replace( /''/g,''));

// desired output > hello ''world''

修改

Sorrie,我试图创建一个简单的例子并且有一些适用于原始示例的答案,但是我需要将''替换为NULL而不是什么。

// desired output > hello NULL ''world''

2 个答案:

答案 0 :(得分:2)

使用^ char实现字符类(a.k.a.否定字符类)中的字符否定。

因此,在您的情况下,请将!替换为^。试试这个:

var str = "hello '' ''world''"

// > hello NULL ''world'' 
console.log(str.replace( /''([^a-z]{1,}'')/g,"NULL$1"));

有关更完整的示例,也许这更适合:

var str = "hello '' ''world'' ''hello'' '' world"

console.log(str.replace( /(^|[^a-z])''([^a-z]+|$)/g,"$1NULL$2"));
// > "hello NULL ''world'' ''hello'' NULL world"

答案 1 :(得分:0)

你可以尝试:

"hello '' ''world''".replace( /''\s*''/g,'\'\'');
//"hello ''world''"