Javascript 正则表达式:不是一行的开头?
我有这样一个字符串:Javascript 正则表达式:不是一行的开头?,javascript,regex,replace,Javascript,Regex,Replace,我有这样一个字符串:------------243f,33f--- 现在我想删除所有的-字符,除了第一个-、、和数字。结果应该是-243,33。我该怎么做?'------------243f,33f---'.替换(/[^-0123456789,]/g',)。替换(/^-/,'x')。替换(/-/g',)。替换(/x/,'-')。 输出:'-243,33''----243f,33f---'.替换(/[^-0123456789,]/g',)。替换(/^-/,'x')。替换(/-/g',)。替换(/x
------------243f,33f---
现在我想删除所有的-
字符,除了第一个-
、、
和数字。结果应该是-243,33。我该怎么做?'------------243f,33f---'.替换(/[^-0123456789,]/g',)。替换(/^-/,'x')。替换(/-/g',)。替换(/x/,'-')。
输出:'-243,33'
'----243f,33f---'.替换(/[^-0123456789,]/g',)。替换(/^-/,'x')。替换(/-/g',)。替换(/x/,'-')。
输出:'-243,33'
试试这个:
(?:(^-)|[^\d,\r\n])
并替换为
$1
看到了吗
这有点困难,因为Javascript不支持look-behinds。因此,如果在行首有一个-
,它将被自身替换,因为其他匹配项$1
为空,因此将被替换为零。尝试此项:
(?:(^-)|[^\d,\r\n])
并替换为
$1
看到了吗
这有点困难,因为Javascript不支持look-behinds。因此,如果行的开头有一个
-
,它将被自身替换,因为其他匹配项$1
为空,因此被替换为空。替换第二个字符ala中的子字符串
string.charAt(0) + string.substring(1).replace("-","");
但我不知道语法是否正确
编辑:
哦,如果你也想删除f,你可以删除任何非数字和非逗号:
string.charAt(0) + string.substring(1).replace("[^0-9,]","");
替换第二个字符中的子字符串
string.charAt(0) + string.substring(1).replace("-","");
但我不知道语法是否正确
编辑:
哦,如果你也想删除f,你可以删除任何非数字和非逗号:
string.charAt(0) + string.substring(1).replace("[^0-9,]","");
您的问题仍然不是很清楚,但这会产生您想要的输出:
'----------- 243f,33f----'.replace(/(?!^-)[^\d,]+/g, '')
在确保第一个字符不是字符串开头的连字符后,正则表达式将匹配除数字或逗号以外的一个或多个字符
编辑:对于那些使用
(?提出正则表达式,然后因为JavaScript不支持lookbehinds而撤销它们的人,这是不必要的。我知道这些答案还有其他问题,但为了匹配“不是字符串的开头”,(?!^)
工作正常。您的问题仍然不是很清楚,但这会产生您想要的输出:
'----------- 243f,33f----'.replace(/(?!^-)[^\d,]+/g, '')
在确保第一个字符不是字符串开头的连字符后,正则表达式将匹配除数字或逗号以外的一个或多个字符
编辑:对于那些使用(?提出正则表达式,然后因为JavaScript不支持lookbehinds而撤销它们的人,这是不必要的。我知道这些答案还有其他问题,但为了匹配“不是字符串的开头”,(?!^)
效果很好。您是否使用了特定的语言?在您的示例中,结果如何?您想删除还是保留逗号?恐怕您对您的意图不是很明确。删除除第一个-
和,
之外的所有内容都会给您带来-,
,您可以硬编码;-)您是否使用特定的语言?在您的示例中,结果如何?是否要删除或保留逗号?恐怕您对您的意图不是很明确。删除除第一个-
和,
之外的所有内容都会给您带来-,
,您可以硬编码;-)这将在起始处添加破折号,即使原始字符串中没有破折号。这将在起始处添加破折号,即使原始字符串中没有破折号。