我需要用空(''
)替换不需要的字符串,使用regexp
不像预期的那样工作。
如果我尝试替换开始组它的作品(^\w*)
.但我不能选择的数字后修复. (\D*$)
.如何合并两者或什么这是正确的语法来取代?
范例:
--123 should be -123
a-123 should be -123
!-123- should be -123
+-123.44x should be -123.44
--123.33- should be -123.33
字符串
当我尝试此操作时,没有得到预期的输出.replace(/[^-\d\.]\D*$/g, ""))
5条答案
按热度按时间rlcwz9us1#
我的问题是:为什么使用
replace()
来删除你不想要的东西,而不是match()
删除你想要的东西?字符串
在上面的代码片段中,我们使用了正则表达式
/-?\d+(\.\d+)?/
,它匹配一个可选的-
,后跟一个或多个小数。这些后面可以跟一个.
,但前提是后面必须跟一个或多个其他小数。如果没有匹配,则从
match()
返回null
。为了防止在解构const [match] = ...
时出现异常,我们改为分配[null]
。zbq4xfa02#
您可以使用以下正则表达式进行搜索:
字符串
并将其替换为空字符串。
Code Demo
产品代码:
型
RegEx详情:
^
:开始\D*
:匹配0个或多个非数字(?:
:启动非捕获组(?=-)
:我们在下一个位置有一个-
|
:或\D
:匹配任何非数字的字符)
:结束非捕获组|
:或(?<=\d)
:Assert当前位置之前有一个数字(?!\.\d)
:Assert前面没有点和数字[^\d\n]
:匹配一个不是数字也不是换行符的字符.*
:匹配任何内容$
:结束44u64gxh3#
写一个匹配你想保留的内容的正则表达式,在它的周围加上
.*
来匹配字符串的其余部分,然后只替换捕获的文本。字符串
DEMO
fv2wmkja4#
尝试以下 * 捕获模式 *。
字符串
\S*? ... \S*
,前面和后面可以有任何非 * 空白 * 字符。(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)
,捕获任何数字,可选地后跟一个 * 十进制值 *,可选地后跟一个 * 科学计数法 * 中的值。这里有一个例子。
型
ep6jt1vc5#
你可以这样做:
字符串
^\w*
:删除开头的所有单词字符。|:或\D*$
:删除结尾的所有非数字字符。g
:全局标志,替换所有示例。