regexp:从文本和文本中获取百分比数字

时间:2018-01-29 12:39:40

标签: javascript regex

具有所需结果的示例字符串:

a)"some āē text 12%"

我需要将“someāētext”和“12%”作为单独的项目。

b)"12% some text"

我需要将“一些文字”和“12%”作为单独的项目。

此外,我总是应该能够确定百分比匹配的位置。因此,如果在结果匹配中,百分比数字(12%)将始终为秒,则会更好。

假设: percerntage number只能位于文本的开头或结尾。因此,单词之间没有百分比数字。文本中只有一个百分比数字。

我还不是Regexp的朋友,但我已经尝试过了。 到目前为止,如果有百分比的文本,我可以写regexp来匹配。但我不能写regexp,将这个数字从另一个文本中分离出来。

        // text with special characters and percentage
        const regex = /^[a-zA-Z0-9\u00C0-\u017F\s%]+$/gi // I need english + other letters, but not special symbols or brackets
        var matches = str.match(regex);

2 个答案:

答案 0 :(得分:7)

这是一个简单的解决方案:

let [, textBefore, number, textAfter] = yourString.match(/^(.*?)(\d+%)(.*)$/)

这里有两个假设:

如果未经过验证,您也可以写

var match = yourString.match(/^(.*?)(\d+%)(.*)$/);
if (match) {
    var textBefore = match[1];
    var number = match[2];
    var textAfter = match[3];
}

答案 1 :(得分:0)

This following regex生成2个组(不一定按此顺序):

  • 不同字符的子字符串(也可以是特殊符号)

  • 百分号的数字

这里唯一的假设是这两个部分之间有空格。

^(\d+%) (.*)|(.*?) (\d+%)$