2017-08-10 77 views
2

编辑:对不起,应该有更多的信息删除只有某些类型的字符正则表达式

是否有可能在这里只取代英文文本?

{ "question": "本能", "answers":[ "ほんのうInstinct" ] }, 

我希望它只是{ "question": "本能", "answers":[ "めがね" ] },并保留其他的英文文本。

试过[A-Za-z] +,它适用于所有英文文本,但我不知道如何选择某个部分。我使用的是查找并替换记事本+

+0

'めがねGlasses'.replace(/ [Az]/g,'') – Laurianti

+0

@Laurianti这应该是'.replace(/ [A-Za-z]/g,'')'。 ['[A-Z]'不仅仅匹配字母](http://stackoverflow.com/a/29771926/3832970)。 –

+0

@PierceJ什么是正则表达式/编程语言? –

回答

1

您可以使用

(?:\G(?!^)|"answers"\s*:\s*\[\s*")[^"]*?\K[a-zA-Z]+ 

,并用一个空字符串替换。

详细

  • (?:\G(?!^)|"answers"\s*:\s*\[\s*") - 上一次成功的匹配(\G(?!^))或(|"answers"子字符串结束,空格0+,:,0 +空格,[,0 +空格," (请参阅"answers"\s*:\s*\[\s*"
  • [^"]*? - 除"之外的任何0+字符,如很少尽可能(如*?是一个懒惰的量词)
  • \K - 匹配复位操作丢弃所有文本从比赛缓冲到目前为止匹配
  • [a-zA-Z]+ - 1个或多个ASCII字母

测试:

enter image description here

1

这是你的正则表达式:/[A-Za-z]*/g

var s = '":[ "めがねGlasses" ] },' 
 

 
console.log(s.replace(/[A-Za-z]*/g, ''))

1

您可以替换成空字符串匹配/[a-z]/gi一切。

标记gi分别表示您希望匹配多次,而您希望不区分大小写。

您还可以使用\w代表单词字符的快捷方式,但这也会匹配您不想删除的[0-9_]

Here is a working exemple of the regex.

相关问题