javascript - 正则表达式选择值

标签 javascript regex node.js

我有字符串变量,包含以下文本:

var val1="GES3 02R202035   ";
var val2=0;
var val3="06              ";
var val4="03.01.11i";
var val5="";

我想使用 RegExp 来获取值数组并从尾随空格中过滤值。

/="?([\w\s\.]*)/g 有很多帮助,除了尾随空格,我不确定可能有其他字符。 所以我需要类似 /="?(.*);/g 但它不会删除最后一个 " 和空格。

/="?(.*)"?;/g 不会删除最后一个 ",谁知道为什么?

有人可以帮我解决这个问题吗?

编辑:

预期输出是:

GES3 02R202035
0
06
03.01.11i
and empty string here

编辑:

我需要在 javascript (node.js) 中使用这个 str.match(/??????/);

编辑:在 Wiktor Stribiżew 和 melpomene 的帮助下,我终于得出: (注意正则表达式中的lookbehind,它只能在启用和谐标志的chrome中工作)

var str =
    'var val1="GES3 02R202035   ";\n' +
    'var val2=0;\n' +
    'var val3="06              ";\n' +
    'var val4="03.01.11i";\n' +
    'var val5="";\n';

console.log('before:\n' + str);

var parts = str.match(/(?<=="?)[^"]*?(?=\s*"?;)/g);
  
console.log('parts\n', parts);

str.match() 的问题是它返回匹配数组,而我实际上需要组数组。解决方案是安排正则表达式以完全匹配我需要的结果。最新的 V8 及其对后瞻的支持使这成为可能。

最佳答案

var str =
    'var val1="GES3 02R202035   ";\n' +
    'var val2=0;\n' +
    'var val3="06              ";\n' +
    'var val4="03.01.11i";\n' +
    'var val5="";\n';

console.log('before:\n' + str);

var re = /=\s*(?:([-+]?\d+(?:\.\d+)?)|"([^"]*)")/g;

var parts = [];
var m;
while (m = re.exec(str)) {
    var x =
        m[1] !== undefined
            ? Number(m[1])
            : m[2].trim()
    parts.push(x);
}

console.log('parts\n', parts);

此代码提取嵌入的数字和字符串(在 = 符号之后)。数字(格式为 (- | +)?digits (.digits)?,即接受可选符号和可选小数位)转换为 JS 数字;字符串的内容被提取和 trim 。

它不支持指数表示法 (1e2) 或字符串中的反斜杠转义。

关于javascript - 正则表达式选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055675/

相关文章:

python - 如何使用 Python 在二进制文件中查找 float ?

regex - 匹配输入字符串中的 URL 链接

javascript - 如何在 Electron renderer.js 文件中使用 Node.js 解析 JSON?

Node.js 回调 |具有 waterfall 流的异步 forEach 嵌套循环

javascript - Magento 站点 : Tapping thumbnail photo doesn't change large photo on mobile

javascript - Javascript 如何避免无限回调调用?

javascript - 如何在 native react 中将图像的一半显示在另一张图像上

javascript - 在 node.js 的正则表达式中指定或

node.js - 使用 Firebase Auth 和 Express 验证社交登录?

javascript - jQuery 链接和级联然后是什么时候