我的正则表达式有问题,我只需要引用此字符串中产品的价格,我使用了此正则表达式,但它没有帮助我,有人可以修复它吗?谢谢
我只需要一个单词69
LEUWIN 4XL CHF 69 .–
我的尝试:
var re = /[0-9]{2}/;
我从此字段中获取它(下图)
除了在此情况下,它在所有情况下都对我有效
到目前为止,我已经在函数中使用了此正则表达式,但是现在我只读取第一个数字,因此必须替换,否则价格和数字始终相同
function calculateSumWithInput(e) {
var re = /\d+/;
var value = re.exec(e.target.value);
if (value && !isNaN(value) && Number(value) === parseInt(value, 10)) {
sum = parseInt(value, 10);
finalInput.value = "CHF " + sum + ".–";
}
}
谢谢大家的帮助
答案 0 :(得分:1)
提取数字followed by private let videoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
private let jpegCompressionQuality = 0.7
private func imageFromCurrentPlayerContext() {
guard let player = player else { return }
let currentTime: CMTime = player.currentTime()
guard let buffer: CVPixelBuffer = videoOutput.copyPixelBuffer(forItemTime: currentTime, itemTimeForDisplay: nil) else { return }
let ciImage: CIImage = CIImage(cvPixelBuffer: buffer)
let context: CIContext = CIContext.init(options: nil)
guard let cgImage: CGImage = context.createCGImage(ciImage, from: ciImage.extent) else { return }
let image: UIImage = UIImage.init(cgImage: cgImage)
guard let jpegImage: Data = UIImageJPEGRepresentation(image, jpegCompressionQuality) else { return }
// be happy
}
。试试:
.–
答案 1 :(得分:0)
从您的示例来看,我建议您使用此正则表达式:
/.*(CHF \d+).*/
您应该对其进行测试,然后访问将作为match输出的数组的第二个元素。假设输入为可变文本,并且输出必须保存为可变价格:
if(/.*(CHF \d+).*/.test(text)) price = text.match(/.*(CHF \d+).*/)[1];
答案 2 :(得分:0)
您必须匹配货币代码,该代码始终以三个大写字符([A-Z]{3}
)开头。
至少跟随一个描述整数部分(\d+
)的数字。
后跟一个句点(\.
,我们必须转义该句点,因为它是正则表达式中的特殊字符)。
以小数部分(\d+
)结尾或短划线-
。
这给我们留下了
/[A-Z]{3} \d+\.(\d+|-)/
无论如何,制作正则表达式时,重要的一点是要提供有关要匹配的确切模式的详细信息。