【问题标题】:Regex: How to remove all characters that are not connected to figure (next to specific characters)正则表达式:如何删除所有未连接到图形的字符(特定字符旁边)
【发布时间】:2018-04-17 09:25:45
【问题描述】:

我有一个返回如下结果的函数:given output

我给定的字符串可以与这个例子进行比较:

var string = '    111   1   1\n 1111111 1 \n         11111 11      11'

好的,你看:我的字符串包含一些 '1'空格换行 字符。

现在我想得到这样的正则表达式结果(删除所有红色圆圈字符):result output

所以正则表达式应该删除所有'1'字符未连接大'1 '-字符行

(对不起,我知道这听起来很疯狂,但我需要这个结果:p)


例子:
var string=' 111 1111111111111111 11 1'

var result='1111111111111111' 

(删除所有 '1' / ' ' - 没有直接连接到 2 个空格字符之间的最大字符串的组 - ['1111111111111111'])

我只是希望你能明白我的意思:)

提前致谢,乔纳森

PS:文本输出:pastbin.com

【问题讨论】:

  • 另一方面,我们可以说你会得到最长的 1 匹配吗?
  • 我不应该给出完全相同的结果,还是? @revo
  • 这更像是一个 XY 问题。它返回相同的输出,但方法更清晰:删除与匹配。
  • 您能否在问题中包含实际字符串作为文本?
  • 当然,已编辑 @guest271314

标签: javascript jquery arrays regex string


【解决方案1】:

我认为,其中一种方法是使用 \b

 '    111   1  '.replace(/(\b1{0,7}\b)|( +)/gi, '')

【讨论】:

  • 这个正则表达式是否仅在最长序列长度为 8 个或更多字符时才有效?我觉得问题的作者需要它更有活力
【解决方案2】:

您可以尝试像\d{8,} 这样简单的方法。此正则表达式将帮助您将任何数字 \d 与它具有 8 位或更多位的条件相匹配。

演示:https://regex101.com/r/bvhMDL/1/

例子

var string = ' 111  1111111111111111 11    1';
var regex = /\d{8,}/g;
var match = regex.exec(string);
document.write(match[0])

如果您的字符串有多行,这是另一个示例。

var string = `
 111 1  1111111111111111 11    1
 11 1   1\n   11111111111 11    1
 1   1\n 1  1111111111111111111 11    1
 11   1\n   111111111111 11    1
 111  1111111111111111111 11    1
 1 1   1\n   1111111111111111 11    1
 111  1111111111111111111 11    1
 11 \n 111111111111 11    1
`;
var regex = /\d{8,}/g;
var match = regex.exec(string);
while (match != null) {
  document.write(match[0]+'<br>')
  match = regex.exec(string);
}

对于真实数据,请确保使用 1{8,} 而不是 \d{8,},因为那里有零作为输入。这是一个真实日期的例子

var string = `
Array (134)
0 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
1 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
2 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
3 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
4 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
5 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
6 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
7 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
8 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
9 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
10 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
11 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
12 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
13 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
14 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
15 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
16 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
17 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
18 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
19 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
20 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
21 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
22 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
23 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
24 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
25 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
26 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
27 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
28 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
29 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
30 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
31 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
32 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
33 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
34 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
35 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
36 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
37 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
38 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
39 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
40 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
41 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
42 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
43 "0000000000000000000000000000000000000000000000000011100000000000000000000000000000000000000000000000"
44 "0000000000000000000000000000001100000000000000000001100000000000000000001000000000000000000000000000"
45 "0000000000000000000000000000001110000000000000000000000000000000000000011100000000000000000000000000"
46 "0000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000"
47 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
48 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
49 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
50 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
51 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
52 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
53 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
54 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
55 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
56 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
57 "0000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000"
58 "0000000000000000000000000000000000011100111111111000000000000000000000000000000000000000000000000000"
59 "0000000000000000000000000000000000001100111111111000000000000000000000000000000000000000000000000000"
60 "0000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000"
61 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
62 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
63 "0000000000000000000000000000000000000000111111111111111111111100000100000000000000000000000000000000"
64 "0000000000000000000000000000000000000000111111111111111111111100001110000000000000000000000000000000"
65 "0000000000000000000000000000000000000000111111111111111111111100000100000000000000000000000000000000"
66 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
67 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
68 "0000000000000000000000000000000000000000111111111111111111111100000000000000000000000000000000000000"
69 "0000000000000000000000000000000000000000111111110000001111111100000000000000000000000000000000000000"
70 "0000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000"
71 "0000000000000000000000000000000000000000111111110000000000000000000000000000000000000000000000000000"
72 "0000000000000000000000000000010000000000111111110000000000000000000000000000000000000000000000000000"
73 "0000000000000000000000000000111000000001111111111100000000000000000000000000000000000000000000000000"
74 "0000000000000000000000000000010000000001111111111111111111111100000000000000000000000000000000000000"
75 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
76 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
77 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
78 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
79 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
80 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
81 "0000000000000000000000000000000000000001111111111111111111111100000000000000000000000000000000000000"
82 "0000000000000000000000000000000000000000000000000000011111111100000000000000000000000000000000000000"
83 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
84 "0000000000000000000000000000000000000000000000000000000000000000000000011100000000000000000000000000"
85 "0000000000000000000000000001100000000000000000000000000000000000000000011100000000000000000000000000"
86 "0000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000000000000"
87 "0000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000"
88 "0000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000"
89 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
90 "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
`;
var regex = /1{8,}/g;
var match = regex.exec(string);
while (match != null) {
  document.write(match[0]+'<br>')
  match = regex.exec(string);
}

【讨论】:

  • 你能不能也给我正则表达式来用空格替换所有(当前删除的)'1'字符?问候
  • @jobyom 很高兴。为了您的方便,我添加了一个带有真实数据的附加示例。至于您的问题,用空格替换当前删除的“1”字符有点棘手。你可以试试(1{8,})|(1{1,4})。这将帮助您匹配已删除的“1”字符。然后,您可以使用 javascript 将它们替换为空格。演示:regex101.com/r/u0Szwb/2
猜你喜欢
  • 2011-03-19
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多