使用JavaScript和Regex校对文本

时间:2015-02-03 16:57:44

标签: javascript regex replace

我校对了很多同行提交的明文文件。当我的眼睛疲倦时,我有时会忽略额外的空间或重复的单词。我目前使用以下RegEx搜索:

[/t]{2} -Finds duplicate spaces  
(?>(/p{P})\1+)(?<![^.]|^)\.{3}) -Finds duplicate punctuation except ellipses  
\b(\w+)\s+\1\b -Finds duplicate words  

我也有一些自定义搜索,例如找到“Mister”并替换为“Mr。”

有没有一种简单的方法可以在JavaScript中执行这四种类型的替换函数?

1 个答案:

答案 0 :(得分:0)

你的前两个正则表达看起来不太好 你可以将它们全部组合成一个正则表达式。

以下两种类型:

Type-1使用punct posix字符类 Type-2使用Branch Reset构造和Punct属性构造。

只需使用适用于您的平台的正则表达式进行全局查找/替换即可。

类型1 -

 # Find:  (?:([^\S\r\n])[^\S\r\n]+|\b(\w+)(?:\s+\2)+\b|(\.{3})\.*|([[:punct:]])\4+)
 # Replace:  $1$2$3$4

 (?:
      ( [^\S\r\n] )                 # (1)
      [^\S\r\n]+ 
   |  
      \b 
      ( \w+ )                       # (2)
      (?: \s+ \2 )+
      \b 
   |  
      ( \.{3} )                     # (3)
      \.*
   |  
      ( [[:punct:]] )               # (4)
      \4+ 
 )

类型2 -

 # Find:  (?|([^\S\r\n])[^\S\r\n]+|\b(\w+)(?:\s+\1)+\b|(\.{3})\.*|(\p{Punct})\1+)
 # Replace:  $1

 (?|
      ( [^\S\r\n] )                 # (1)
      [^\S\r\n]+ 
   |  
      \b 
      ( \w+ )                       # (1)
      (?: \s+ \1 )+
      \b 
   |  
      ( \.{3} )                     # (1)
      \.*
   |  
      ( \p{Punct} )                 # (1)
      \1+ 
 )