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而撤销它们的人,这是不必要的。我知道这些答案还有其他问题,但为了匹配“不是字符串的开头”,
(?!^)
效果很好。

您是否使用了特定的语言?在您的示例中,结果如何?您想删除还是保留逗号?恐怕您对您的意图不是很明确。删除除第一个
-
之外的所有内容都会给您带来
-,
,您可以硬编码;-)您是否使用特定的语言?在您的示例中,结果如何?是否要删除或保留逗号?恐怕您对您的意图不是很明确。删除除第一个
-
之外的所有内容都会给您带来
-,
,您可以硬编码;-)这将在起始处添加破折号,即使原始字符串中没有破折号。这将在起始处添加破折号,即使原始字符串中没有破折号。