javascript - 正则表达式逗号作为可选字符

标签 javascript regex

我有我制作的这个正则表达式:

/\$([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/

相关文章:

javascript - 从 javascript 发送用于身份验证的共享 key

php - 爆炸价格符号和数字

regex - 将 R 中的特定行获取到新表

java - 检查字符串是否包含任何非数字字符 - 没有库 - Java

javascript - 删除单击按钮上的数组项

javascript - 更新 CSS 规则属性值

JavaScript 正则表达式(替换)如果在其他单词之后没有单词

javascript - 获取选定文件夹上的第一个子文件夹

regex - 基于本体的字符串分类

java - 如何使用正则表达式重新排列方法访问修饰符