我有我制作的这个正则表达式:
/\$([A-Za-z0-9\-\_ ]+)(\,?)/gi
我需要转换以下句子:
$a, $b, $c, $hi = "", $na
进入这个:
$a = NULL, $b = NULL, $c = NULL, $hi = "", $na = NULL
但我得到的不是上面的例子:
$a = NULL, $b = NULL, $c = NULL, $hi = "", $na
我用它来替换值:
$$$1 = NULL$2
如您所见,如果没有逗号,它将不起作用。
希望大家能帮帮我。
更新:如果它有“=”和一个值,我只需要忽略它: 例如,我必须将其转换为:
$a, $a, $a
$a, $a = '', $a
$a
$a,
$a = ''
$a = '',
$a = '', $a
进入这个
$a = NULL, $a = NULL, $a = NULL
$a = NULL, $a = '', $a = NULL
$a = NULL
$a = NULL,
$a = ''
$a = '',
$a = '', $a = NULL
'' 也可以是 NULL、""和整数值。
最佳答案
你可以使用
/\$([\w -]+)(?!\w|,?\s*=)(,?)/g
参见 regex demo .
请注意,[A-Za-z0-9_]
= \w
,因此可以缩短正则表达式模式,如上所示。
(?!\w|,?\s*=)
部分是这里的主要区别:它确保没有单词 char 或可选的 ,
后跟 0+ 个空格,然后 =
在匹配第 1 组模式后立即 [\w -]+
。
查看 JS 演示:
const texts = ['$a, $a, $a', "$a, $a = '', $a", '$a', '$a,', "$a = ''", "$a = '',", "$a = '', $a", '$a, $b, $c, $hi = "", $na'];
const regex = /\$([\w -]+)(?!\w|,?\s*=)(,?)/g;
for (let s of texts) {
console.log("`" + s + "` => `" + s.replace(regex, '$1 = NULL$2') + "`")
}
关于javascript - 正则表达式逗号作为可选字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60469063/