具有所需结果的示例字符串:
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);
答案 0 :(得分:7)
这是一个简单的解决方案:
let [, textBefore, number, textAfter] = yourString.match(/^(.*?)(\d+%)(.*)$/)
这里有两个假设:
let
,destructuring assignment)如果未经过验证,您也可以写
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+%)$