正则表达式从文本中删除项目符号不起作用

时间:2011-06-28 11:21:42

标签: javascript regex

  

可能重复:
  How to remove Bullets from the text using javascript regular expression
  How to identify and Remove any type of Bullet in the Text

我是来自MS Word的一些数据。该文本可能包含或不包含复制文本中的项目符号。但是我需要在javascript中使用正则表达式从复制的文本中删除任何类型的项目符号。我的代码如下所示。截至目前,它仅删除•。

 var x = "1.   Jnflkvkbfjvb  2.   Kjnfbhvjbv  3.   ;kbvrjvbrjvb    •    Jnflkvkbfjvb    •    Kjnfbhvjbv    •    ;kbvrjvbrjvb     a)   Jnflkvkbfjvb  b)   Kjnfbhvjbv  c)   ;kbvrjvbrjvb    A.   Jnflkvkbfjvb  B.   Kjnfbhvjbv  C.   ;kbvrjvbrjvb     I.      Jnflkvkbfjvb  II.      Kjnfbhvjbv III.      ;kbvrjvbrjvb ";
 x = x.replace(/[•\t.+]/g, '');
 x = x.replace(/[[1-9]{?}+[.]\t]/g, '');
 alert(x);

请有人帮帮我。

3 个答案:

答案 0 :(得分:6)

x = x.replace(/\d\.\s+|[a-z]\)\s+|•\s+|[A-Z]\.\s+|[IVX]+\.\s+/g, "");

它基本上是你要删除的各种子弹的复合物:

  • \d\.\s+ - 编号的子弹
  • [a-z]\)\s+ - 带有右括号的小写字母子弹
  • •\s+ - 通常的子弹
  • [A-Z]\.\s+ - 带点的大写子弹
  • [IVX]+\.\s+ - 罗马编号的子弹

答案 1 :(得分:3)

var x = "1.   Jnflkvkbfjvb  2.   Kjnfbhvjbv  3.   kbvrjvbrjvb\
•    Jnflkvkbfjvb  •    Kjnfbhvjbv  •    kbvrjvbrjvb\
a)   Jnflkvkbfjvb  b)   Kjnfbhvjbv  c)   kbvrjvbrjvb\
A.   Jnflkvkbfjvb  B.   Kjnfbhvjbv  C.   kbvrjvbrjvb\
I.   Jnflkvkbfjvb  II.  Kjnfbhvjbv  III. kbvrjvbrjvb";

x = x.replace(/([0-9A-Z]+[.)]|•)\s+/gi, "");

alert(x);

从示例文本中删除所有项目符号。请注意,因为这也可能会删除您不想删除的文本。

说明:

(              # group 1
  [0-9A-Z]+    #   any combination of digits 0-9 or letters A-Z
  [.)]         #   either a dot or a closing paren
  |            #   ...or
  •            #   a bullet sign
 )\s+          # end group 1, match any following whitespace

答案 2 :(得分:0)

问题是过分使用括号。试试这个:

x= x.replace(/[•\t]+/g, '');
x= x.replace(/[1-9]{?}+[.]\t/g, '');

括号创建一组要匹配的字符。当你用括号括起整个东西时,它试图匹配括号内的字符组中的任何一个字符(并且没有嵌套,所以它在第二个查询中占用了所有重复项。)