我有一个这样的字符串:----------- 243f,33f----
现在我要删除除第一个-
,-
和数字之外的所有,
字符。结果应为-243,33。我该怎么做?
答案 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
由于Javascript不支持外观,因此它有点困难。因此,如果在行的开头有-
,它将被自己替换,因为其他匹配$1
为空,因此替换为空。
答案 3 :(得分:0)
从第二个字符ala
替换子字符串string.charAt(0) + string.substring(1).replace("-","");
但我不知道语法是否正确
编辑:
哦,如果你想删除f&#39; s你可以删除任何非数字和非逗号:
string.charAt(0) + string.substring(1).replace("[^0-9,]","");