我正在应用这个正则表达式:
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/