正则表达式:不是一行的开头

Regex: Not the beginning of a line?

本文关键字:一行 开头 正则表达式      更新时间:2023-09-26

我有一个这样的字符串:----------- 243f,33f----

现在我想删除所有的-字符,除了第一个-, ,和数字。结果应该是-243,33。我该怎么做呢?

您的问题仍然不是很清楚,但这会产生您想要的输出:

'----------- 243f,33f----'.replace(/(?!^-)[^'d,]+/g, '')

在确保字符串开头的第一个字符不是连字符之后,regex匹配除数字或逗号以外的任何字符中的一个或多个。

EDIT:对于那些使用(?<!^)提出正则表达式然后撤回它们的人,因为JavaScript不支持向后看,这是不必要的。我知道这些答案还有其他问题,但为了匹配"不是字符串的开头",(?!^)工作得很好。

'----------- 243f,33f----'.replace(/[^-0123456789,]/g, '').replace(/^-/, 'x').replace(/-/g, '').replace(/x/, '-')

output: '-243,33'

替换第二个字符ala的子字符串

string.charAt(0) + string.substring(1).replace("-","");

但是我不知道语法是否正确

编辑:

哦,如果你也想删除f你可以删除任何非数字和非逗号:

string.charAt(0) + string.substring(1).replace("[^0-9,]","");

试试这个:

(?:(^-)|[^'d,'r'n])

并替换为

$1

在Regexr上查看

这有点困难,因为Javascript不支持向后看。因此,如果在行开始处有-,它将被自己替换,对于其他匹配$1是空的,因此将被替换为空