Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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正则表达式的问题:完全替换这个数量的字母_Javascript_Regex - Fatal编程技术网

javascript正则表达式的问题:完全替换这个数量的字母

javascript正则表达式的问题:完全替换这个数量的字母,javascript,regex,Javascript,Regex,我在用javascript定义正则表达式时遇到问题。我想用(即“dd/mm/yyyy”)中的字符串替换(即“dd/mm/yyy”)中的格式字符串。我的问题是如何使用javascript正则表达式。例如,如何转换年份?我一直在尝试使用以下表达式进行转换: f1 = "dd/mm/yy"; f1 = f1.replace(/[^y](yy)[^y]/g, 'yyyy'); f1 = f1.replace(/[^y](y)[^y]/g, 'yy'); 有了这个,我试图将所有未被任何“y”排序的“yy

我在用javascript定义正则表达式时遇到问题。我想用(即“dd/mm/yyyy”)中的字符串替换(即“dd/mm/yyy”)中的格式字符串。我的问题是如何使用javascript正则表达式。例如,如何转换年份?我一直在尝试使用以下表达式进行转换:

f1 = "dd/mm/yy";
f1 = f1.replace(/[^y](yy)[^y]/g, 'yyyy');
f1 = f1.replace(/[^y](y)[^y]/g, 'yy');

有了这个,我试图将所有未被任何“y”排序的“yy”转换为“yyy”,然后单独对“y”执行同样的操作,但我不知道如何说“yy未被任何y排序排序”。如果您想精确匹配两个“y”,则使用
/\by{2}\b/
\b
是一个单词边界,它将包括字符串的开头,字符串的结尾,和您的“/”等。

将字符分组到
y
之前,并使用
$1
返回到它。“前面的字符”可以是除
y
之外的任何字符。它还允许在
y
之前没有任何内容,因此
^

在模式前面加上
(?!y)
,这意味着“如果下一个字符不等于
y
,则匹配”

将两者相加:

f1 = "dd/mm/yy";
f1 = f1.replace(/([^y]|y)yy(?!y)/g, '$1yyyy');
f1 = f1.replace(/([^y]|^)y(?!y)/g, '$1yy');

确切地说,Rob W使用单词边界指出了一个不匹配的正则表达式。正则表达式与前面提到的匹配,dd/mm/yyo给我的印象是非常做作的,就像你最终得到的01/01/111一样,毫无意义。