$() 从字符串中删除
$() is removed from string
我想用新验证替换旧验证。但是新的验证正则表达式正在从正则表达式中删除 $()。
$oldValidation="<RegexPattern>^[\da-zA-Z\s+()\-']+$</RegexPattern>"
$newValidation= "<RegexPattern>^[\w\s,.;+&'""!?$()@%]*$</RegexPattern>"
$_.Fields["Parameters"].value -replace $oldValidation, $newValidation
但是 newValidation 正在从正则表达式中删除 $()
并像这样显示它
<RegexPattern>^[\w\s,.;+&'"!?@%]*$</RegexPattern>
这可以帮助:
$oldValidation="<RegexPattern>^[\da-zA-Z\s+()\-']+$</RegexPattern>"
$newValidation= "<RegexPattern>^[\w\s,.;+&'""!?`$()@%]*$</RegexPattern>"
$_.Fields["Parameters"].value -replace [regex]::escape($oldValidation), $newValidation.Replace('$','$$')
请检查$
前是否有反引号。
另一种可能的解决方案是在 $newValidation
中使用反引号后使用 .Replace
:
$_.Fields["Parameters"].value.Replace($oldValidation, $newValidation)
根据 https://regex101.com,$
表示正则表达式中的行尾。 ()
用于捕获组。您必须将它们反斜杠才能按字面意思使用它们。
我想用新验证替换旧验证。但是新的验证正则表达式正在从正则表达式中删除 $()。
$oldValidation="<RegexPattern>^[\da-zA-Z\s+()\-']+$</RegexPattern>"
$newValidation= "<RegexPattern>^[\w\s,.;+&'""!?$()@%]*$</RegexPattern>"
$_.Fields["Parameters"].value -replace $oldValidation, $newValidation
但是 newValidation 正在从正则表达式中删除 $()
并像这样显示它
<RegexPattern>^[\w\s,.;+&'"!?@%]*$</RegexPattern>
这可以帮助:
$oldValidation="<RegexPattern>^[\da-zA-Z\s+()\-']+$</RegexPattern>"
$newValidation= "<RegexPattern>^[\w\s,.;+&'""!?`$()@%]*$</RegexPattern>"
$_.Fields["Parameters"].value -replace [regex]::escape($oldValidation), $newValidation.Replace('$','$$')
请检查$
前是否有反引号。
另一种可能的解决方案是在 $newValidation
中使用反引号后使用 .Replace
:
$_.Fields["Parameters"].value.Replace($oldValidation, $newValidation)
根据 https://regex101.com,$
表示正则表达式中的行尾。 ()
用于捕获组。您必须将它们反斜杠才能按字面意思使用它们。