我想使用正则表达式从字符串中提取8位数字。
测试字符串是
import { FileUploadModule } from "angular-file-uploader"; @NgModule({ imports: [ ..., FileUploadModule, ... ] })
,hi 82799162
,236232 (82342450)
所需的相应输出应为
test data 8979
,82799162
,82342450
我尝试了以下代码:
null
preg_match('/[0-9]{8}$/', $string, $match);
但是它不会从preg_match('/\d{8}$/', $string, $match);
中检索数字。
答案 0 :(得分:3)
如果正则表达式要精确捕获 8位数字,则必须包含:
\d{8}
作为中心部分,一种可能的解决方案是使用负向后搜索 / 前瞻:
(?<!\d)\d{8}(?!\d)
另一个选择是单词边界断言(两端):
\b\d{8}\b
我认为,像[0-9]{8}
这样的正则表达式还不够,因为它还捕获了
更长序列中的前8位数字。
您对此感到满意吗?
答案 1 :(得分:2)
问题出在您的$
号上,它用来表示表达式的结尾。因此,基本上,使用该表达式,您正在寻找一个以8位数字结尾的字符串。但是在第二个测试字符串中; '236232 (82342450)'
以方括号结尾,因此不符合条件(不以数字结尾)。
因此,删除结尾的$
,它将起作用。
preg_match('/[0-9]{8}/',$string,$match);
希望有帮助!