匹配字符串,字符串
问题描述:
我基本上是试图匹配10个字符ISBN结束,到目前为止,我能够匹配任何字符串,它是10个字符长,但是这是不准确的识别字符串一个ISBN匹配字符串,字符串
10字符长的ISBN可具有9起始位和一个字母结尾或有10位数字,例如
027373702X
如果最后一个字符是字母它总是会X
什么我到目前为止
[a-zA-Z0-9]{10,10}
这个表达式就能从字符串中提取一个isbn,如
"asjdh - asd a - dsa- 0273737025" = 0273737025
而且还会提取其他任何东西,是10个或更多字符长
"asjdh - asd a - dsa- myveryearly" = myveryearl
是否有一个正则表达式,能满足这些要求?
答
\d{9}(?:\d|X)
这是9位数字后跟一个数字或'X'。
答
这应该工作:
[0-9]{9}[xX0-9]
还是比较简洁的形式:
\d{9}[xX\d]
答
你将不得不使用一个回顾后防止查找9个由多个数字分别是之前的数字。
(?<!\d)\d{9}[\dxX]
“字符串”可以包含数字和其他字符。你应该指定“字母”或类似的东西,例如“如果最后一个字符是字母......” –
ISBN的有校验位,你不必重新发明轮子这里 – 2012-09-20 20:27:10
@Dagon这已无关的问题 –