我在javascript中定义正则表达式时遇到问题。我想用this format中的字符串替换this other format中的格式字符串(即“dd / mm / yy”)(即“dd / MM / yyyy”)。我的问题是如何使用javascript正则表达式。例如,如何转换年份?我一直试图用这些表达式进行转换:
f1 = "dd/mm/yy";
f1 = f1.replace(/[^y](yy)[^y]/g, 'yyyy');
f1 = f1.replace(/[^y](y)[^y]/g, 'yy');
有了这个,我试图将所有'yy'转换为'y'并不被'yyyy'所覆盖,然后单独'y'做同样的事情,但我不知道怎么说“ yy not not任何y “。
答案 0 :(得分:1)
在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');
答案 1 :(得分:0)
如果你想要恰好匹配两个'y',那么使用/\by{2}\b/
\b
是一个单词边界,它将包括字符串的开头,字符串的结尾和你的'/'(等等)。