我有正则表达式代码:
<script type="text/javascript">
var str = "kw-xr55und";
var patt1 = /[T|EE|EJU].*D/i;
document.write(str.match(patt1));
</script>
它可以读取:
str= "KD-R55UND" -> as UND
但如果我输入:
str= "kw-tc800h2und -> result tc-800h2und. //it makes script read T in front of 800
i want the result as UND
如何让代码只检查800后面的字符?
在此代码之后,它可以工作:
<script type="text/javascript">
var str = "kw-tc800h2und";
var patt1 = /[EJTUG|]\D*D/i;
document.write(str.match(patt1));
</script>
但显示下一个问题,我可以在以下情况下显示结果:
str= "kw-tc800un2d"
i want result like -> UN2D
答案 0 :(得分:1)
/(?<=\d)\D*/
它使用lookbehind来查找紧跟在数字后面的一组非数字字符。
/\D+$/
它将匹配文本末尾不是数字的任何字符。
答案 1 :(得分:1)
试试这个:
var patt1 = /(T|EE|EJU)\D*$/i;
它将匹配以T
,EE
或EJU
开头的一系列非数字字符,并在字符串末尾结束。如果字符串必须以示例中的D
结尾,则可以将其添加到:
var patt1 = /(T|EE|EJU)\D*D$/i;
如果你想在任何地方匹配它,而不仅仅是在字符串的末尾,请尝试:
var patt1 = /(T|EE|EJU)\D*D/i;
编辑:哎呀!不,当然这不起作用。我试着猜测[T|EE|EJU]
你的意思,因为它是一个匹配一个字符E
,J
,T
的字符类, U
或|
(相当于[EJTU|]
),我确信这不是您的意思。但到底是什么,试试这个:
var patt1 = /[EJTU|]\D*D/i;
我仍然不明白你要做什么,但有时候反复试验是前进的唯一方法。至少我这次测试了! :P
编辑:好的,所以匹配可以包含数字,它不能以一个开头。试试这个:
var patt1 = /[EJTU|]\w*D/i;
答案 2 :(得分:0)
如果/[TEUJ]\D*\d*\D*D$/i
中有1位数字,请尝试tc800h2und
,而不是2.获取更具体的内容需要其他信息,例如字符串的最大长度,或解析{{1}之间的确切差异}和h2und
。
答案 3 :(得分:0)
根据您正在使用的正则表达式的风格,您可以使用后面的断言。它基本上会说“如果它正好在一个数字之后匹配它。”
在python中就是这样:
(?<=\d)\D*
哦,同样,正则表达式区分大小写,除非你设置它不是。