正则表达式:不是一条线的开头?

时间:2011-11-23 09:40:50

标签: javascript regex replace

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

现在我要删除除第一个--和数字之外的所有,字符。结果应为-243,33。我该怎么做?

4 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:1)

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

输出:'-243,33'

答案 2 :(得分:0)

试试这个:

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

并替换为

$1

here on Regexr

由于Javascript不支持外观,因此它有点困难。因此,如果在行的开头有-,它将被自己替换,因为其他匹配$1为空,因此替换为空。

答案 3 :(得分:0)

从第二个字符ala

替换子字符串
string.charAt(0) + string.substring(1).replace("-","");

但我不知道语法是否正确

编辑:

哦,如果你想删除f&#39; s你可以删除任何非数字和非逗号:

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