Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在每个+之后插入1;_Javascript_Regex - Fatal编程技术网

Javascript 在每个+之后插入1;

Javascript 在每个+之后插入1;,javascript,regex,Javascript,Regex,我有以下数据集,需要在其中查找并替换所有事件。该变量可以包含一个示例,也可以包含多个示例,并在行尾用逗号分隔。每个都是一个10位数字,末尾带有/TYPE=PLMN 我目前正在使用一个规则,该规则将采用10位数字,这是一个电话号码,因此,例如,仅使用10号2s ([\+]?)([5]?)(\d{10}.*) +1$3 +2222222222/TYPE=PLMN 并在+ +12222222222/TYPE=PLMN 但是,当它遇到多个实例时,它将仅替换第一个实例,而不会触及其余实例 +2222

我有以下数据集,需要在其中查找并替换所有事件。该变量可以包含一个示例,也可以包含多个示例,并在行尾用逗号分隔。每个都是一个10位数字,末尾带有
/TYPE=PLMN

我目前正在使用一个规则,该规则将采用10位数字,这是一个电话号码,因此,例如,仅使用10号
2
s

([\+]?)([5]?)(\d{10}.*) +1$3

+2222222222/TYPE=PLMN
并在+

+12222222222/TYPE=PLMN
但是,当它遇到多个实例时,它将仅替换第一个实例,而不会触及其余实例

+2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN
你有什么建议吗

+2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN
并将所有实例转换为

+12222222222/TYPE=PLMN, +12222222222/TYPE=PLMN, +12222222222/TYPE=PLMN,        +12222222222/TYPE=PLMN
例如,对于
+
字符行中的任何出现,在其后面没有
1
,插入一个
1
,直到行尾。

使用全局开关:

s='+2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN, +2222222222/TYPE=PLMN'
r=s.replace(/\+/g, '+1');

//=> "+12222222222/TYPE=PLMN, +12222222222/TYPE=PLMN, +12222222222/TYPE=PLMN"

首先,您的正则表达式有一个贪婪的字符:
*
这里:

([\+]?)([5]?)(\d{10}.*)
                    ^^
这将匹配第一次匹配后的所有内容,并防止任何其他匹配,因为匹配不会重叠。因此,即使您有全局标志,您也无法使用该正则表达式获得预期的结果。只要删除它,我相信如果您使用
/TYPE=PLMN
会更安全,因为您已经指定了它

如果要在一个
+
之后添加一个
1
,但后面没有另一个
1
,则必须使用负前瞻

/([\+]?)(?!1)([5]?)(\d{10})\/TYPE=PLMN/g, "+1$3"
        ^^^^^
但是你的正则表达式可以改进一点。您不需要在字符类中转义
+
,实际上可以将其编写为:
\+?
。与
([5]?)
相同,您可以将其编写为
(5?

我想应该这样

注意:如果你有一个像:
51234567890
这样的数字,它将被转换成
+11234567890
(将
5
放在那里。如果你不把
$2
放回引用,我不确定你是否自愿这么做,所以我在这里提到了它)。

在你的正则表达式上使用
/(\+?)(?!1)(5?)(\d{10})\/TYPE=PLMN/g, "+1$3"