javascript - 无法在 javascript 正则表达式中匹配 '£'(英镑)

标签 javascript regex

我正在应用这个正则表达式:

a = new window.RegExp('(£...)');

到 XMLHttprequest 的响应文本:

d= a.exec(Xml.responseText);

其中“Xml.responseText”是包含以下页面的 html 源的字符串:

http://www.amazon.co.uk/gp/aw/d/B0050IIVNK

到目前为止,我已经能够使用相同的代码毫无问题地匹配此页面中的任何表达式。但是当涉及到匹配字符“£”时,“d”变为“null”(不应该,因为页面中至少有两个这样的字符。

有人知道为什么会这样吗?

谢谢。

编辑:按照 MelanciaUK 的建议,通过搜索编码值\xa3 解决了问题,谢谢。

最佳答案

问题不是来自您的正则表达式,您可以使用静态字符串自行检查:

a = new window.RegExp('£...');
d= a.exec("This ring costs £205.50 but I only can spend £150 today.");
// ["£205"]

但我会使用更好的方法来检索金额:

/*
    (
        £         # £ symbol
        \d+       # followed by 1+ number
        (?:       # non-captured group
            \.    # a dot
            \d+   # followed by 1+ number, for decimals
        )?        # decimals are optional
    )
*/
var regex = /(£\d+(?:\.\d+)?)/g;
var input = "This ring costs £205.50 but I only can spend £150 today.";

console.log(input.match(regex)); //["£205.50", "£150"] 

编辑:为了可读性更改了正则表达式文字,遵循 Bergi 的建议

关于javascript - 无法在 javascript 正则表达式中匹配 '£'(英镑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046249/

相关文章:

javascript - 将行附加到嵌套行问题?

javascript - 这个 Backbone todo 应用程序如何将所有元素呈现到页面上?

javascript - VueJS 深度观察者 - 多个对象的特定属性

ruby - 如何在 Cucumber 表(多行参数)中使用正则表达式来区分表?

c# - .NET 正则表达式 isMatch 与匹配问题

javascript - 异步调用函数?

javascript - 一次显示一个隐藏的 div

python - 我如何在表达式中使用 Perl 的 s///?

java - 在字符串或整数之间添加点以创建双 JAVA

正则表达式:无论顺序如何查找元素