regex:如何捕获字符串中的三个数字,而不是字符串的其余部分
regex: How do I capture three digits within a string, but not the rest of the string?
我在这里有一个文本文档:http://regexr.com/3d7t5
使用Javascript(nodeJS),我需要匹配每个以C.O.开头的短语中的三位数:即001、003、036等
我尝试过使用非捕获组,但由于某些原因,我的查询不起作用:
/([0-9]+)(?:C.O. : 'd'd'd)?/g
使用此模式:
/'bC'.O'. : ('d'd'd)'b/g
然后对字符串执行exec
,并获取第一个捕获组的内容。
var rx = /'bC'.O'. : ('d'd'd)'b/g
var s = "C.O. : 001 CALI'nC.O. : 003 MIAMI'nC.O. : 026 TEXAS";
for (var m = rx.exec(s); m; m = rx.exec(s)) {
document.write(m[1]+' ');
}
编辑:如果空白的数量和种类可能不同,您当然也可以调整正则表达式来处理此问题:
/'bC'.O'.'s*:'s*('d'd'd)'b/g
如果只想匹配3位数字,则
/'d{3}/gm
就是你所需要的。但我认为你需要这样的东西:
/^C'.O'..*?('d{3})/gm
或
/^C'.O'..*?:'s*('d{3})/gm
您可以在这里和这里玩和修改上面的正则表达式。
事实证明,奎尔克科萨遗漏了一两个"小细节"。
正则表达式可能应该类似于:
/^'|'s+C'.O'.'s+:'s+('d{3})/gm
此处为示例。
这与下面文本中的009
和011
匹配,但与Total C.O. ...
不匹配。
+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5. HORA : 5:56 PM |
| PAGINA: 14 |
| |
| Empresa : MA |
| C.O. : 009 PALMIRA2 OUTLET Fecha Inicial : 2016/04/16 Hora Inicial: |
| Tipo Inventario : 6 ETIQUETAS Y BOLSAS Fecha Final : 2016/04/16 Hora Final : |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO DESCRIPCION U.M. CANTIDAD BRUTO DESCUENTOS IMPUESTOS T O T A L |
+---------------------------------------------------------------------------------------------------------------------------------------+
01 CLASIFICACION DANE UNI 45.000 ** OBSEQUIO **
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario ETIQUETAS Y BOLSAS 45.000 0 0 0 0
Total Inventario ETIQUETAS Y BOLSAS 45.000 0 0 0 0
-----------------------------------------------------------------------------------------------------------------------------------------
Total C.O. PALMIRA2 OUTLET 1,001,346 0 160,254 1,161,600
Total C.O. PALMIRA2 OUTLET 1,001,346 0 160,254 1,161,600
+---------------------------------------------------------------------------------------------------------------------------------------+
| UNO - VER 8.5. HORA : 5:56 PM |
| PAGINA: 15 |
| |
| Empresa : MA |
| C.O. : 011 CARTAGO Fecha Inicial : 2016/04/16 Hora Inicial: |
| Tipo Inventario : 3 PRODUCTO TERMINADO Fecha Final : 2016/04/16 Hora Final : |
+---------------------------------------------------------------------------------------------------------------------------------------+
|GRUPO DESCRIPCION U.M. CANTIDAD BRUTO DESCUENTOS IMPUESTOS T O T A L |
+---------------------------------------------------------------------------------------------------------------------------------------+
01 CLASIFICACION DANE UNI 26.000 853,537 225,943 100,415 728,009
-----------------------------------------------------------------------------------------------------------------------------------------
Total Inventario PRODUCTO TERMINADO 26.000 853,537 225,943 100,415 728,009
Total Inventario PRODUCTO TERMINADO 26.000 853,537 225,943 100,415 728,009
相关文章:
- Javascript逻辑运算符和字符串/数字
- Javascript排序字符串或数字
- 制作一个regex来验证只有一个数字的字符串
- 将数字转换为字符串数字
- 将HTML(支持文件)中的令牌(字符串、数字等)传递给LogiXML
- 如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 从JS中的字符串中读取数字的库
- 字符串数字-从123456转换为123456
- JavaScript如何面对字符串数字工作
- 将字符串数字的格式设置为货币
- Javascript:如何检索*字符串*数字的小数位数
- 试图理解无法在JavaScript中改变字符串/数字的概念
- Javascript没有使用parseInt函数添加两个字符串数字
- 在jQuery中将整数格式化为字符串数字
- Regex格式字符串数字与逗号和2个小数在javascript
- 如何使用javascript排序字符串数字
- 转换'字符串数字'到一个数字
- 检查字符串/数字类型的字段是否为空
- JavaScript:将字符串/数字转换为数字或null,0返回0