javascript正则表达式的问题:完全替换这个数量的字母
我在用javascript定义正则表达式时遇到问题。我想用(即“dd/mm/yyyy”)中的字符串替换(即“dd/mm/yyy”)中的格式字符串。我的问题是如何使用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
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一样,毫无意义。