编辑:这个问题不同。正则表达式工作正常,每个人都寄给我。问题是$
符号对我的字符串不起作用,但对其他字符串有效。我不知道为什么,我在下面发布了我的函数。
我需要在字符串的末尾找到一个数字,就像这个L
我的目标金额:$ 25.00 / $ 100.00。
我尝试过
var matches = fileDataResult.match(/\d+$/);
但是它返回null,我尝试了不带$的情况,返回了25,不带.00。
如何获取第一个变量的数字变量(25.00,带小数点)和另一个变量100.00的变量,也带小数点。我需要将变量分开,以便可以使用它们,但是我认为正则表达式已损坏,因为它甚至不能与$符号一起使用...有人有建议吗?这是在javascript中。
编辑: 这是我的功能,它读取一个.txt文件并获取字符串。我可以用console.log字符串很好地工作,但是当我在正则表达式中使用$时,它将无法工作!
function fileReaderFunc(file) {
const fileReader = new FileReader();
fileReader.onload = function() {
let fileDataResult = '';
const fileData = fileReader.result;
fileDataResult = fileData.toString();
console.log(fileDataResult);
let str = fileDataResult;
let reg = /\d+(\.\d+)?$/g;
console.log(str.match(reg));
};
fileReader.readAsText(file);
}
答案 0 :(得分:0)
首先\d+
与.
不匹配
您可以使用此
\d+(\.\d+)?$
说明
\d+
-匹配一个或多个数字。(\.\d+)?
匹配.
,后跟一个或多个数字。 (?使它为可选)
let str = "abc 125.00";
let reg = /\d+(\.\d+)?$/g;
console.log(str.match(reg))
答案 1 :(得分:0)
let str = "My Goal Amount: $25.00/$100.00.";
str = str.substring(-1,str.length-1); // remove the terminal period
let reg = /\$.+\$.+$/g;
let res = str.match(reg);
let arr = res[0].split('/');
let [num1,num2] = arr;
console.log("1st: ", num1.substring(1, num1.length));
console.log("2nd: ", num2.substring(1, num2.length));
事实证明,此正则表达式比人们想象的要简单,因为文本本身包含美元符号。可以构造一个正则表达式,搜索正则美元符号后跟其他字符,然后从字符串的末尾用美元符号符号标记的第二个立即数美元符号后跟其他字符,减号表示字符串末尾。
将匹配项存储在一个结果数组中,该数组包含一个元素,然后将其字符串值在文字斜杠上拆分。然后将结果存储在数组arr中。然后通过数组解构将数组中存储的值分配给变量num1和num2。
如果您希望使用更集中的正则表达式,还可以编写以下代码:
let s = "My Goal Amount: $25.00/$100.00.";
s = s.substring(-1, s.length - 1);
let reg = /\$\d+\.\d+.\$\d+\.\d+$/;
let replaced = s.match(reg)[0].replace(/\$/g, "");
console.log(replaced.split("/"));
如果您忽略修整末期的字符串s
,则正则表达式将与该字符串不匹配,从而导致空值。此正则表达式在字符串的末尾指定一个模式,该模式以美元符号开头,后跟一个或多个数字,然后是句点和一个或多个数字。该模式继续匹配另一个字符(在本例中为斜杠),然后是一个美元符号,后跟一个或多个数字,接着是一个句点,然后是一个或多个数字。