设置正确的正则表达式

时间:2018-12-06 14:42:17

标签: javascript regex

我的正则表达式有问题,我只需要引用此字符串中产品的价格,我使用了此正则表达式,但它没有帮助我,有人可以修复它吗?谢谢

我只需要一个单词69

LEUWIN 4XL CHF 69 .–

我的尝试:

var re = /[0-9]{2}/;

我从此字段中获取它(下图)

enter image description here

除了在此情况下,它在所有情况下都对我有效

enter image description here

到目前为止,我已经在函数中使用了此正则表达式,但是现在我只读取第一个数字,因此必须替换,否则价格和数字始终相同

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 + ".–";
  }
}

谢谢大家的帮助

3 个答案:

答案 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+|-)/

无论如何,制作正则表达式时,重要的一点是要提供有关要匹配的确切模式的详细信息。