首页 > 试题广场 >

正则表达式^\d*\*[^\d]*[\w]{6}$,下面

[不定项选择题]
正则表达式/^\d*\*[^\d]*[\w]{6}$/,下面的字符串中哪个能正确匹配?
  • ***abcABCD_89
  • abc*abcABCDEF
  • 123*abcABCD_89
  • 123*ABCabcd-89
感谢Keystion的评论,再次看回这道题。个人认为答案是A,C,大家可以由工具测试。
-----------------------------------
https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx
/^表示匹配输入字符串开始的位置, \d*表示零次或多次数字, \*是转义字符*,[^\d]*表示 零次或多次非数字,[\w]{6}表示所有字符6次,$/表示匹配输入字符串结尾的位置。 
B的*之前一定是数字,排除;
D有连字符-,排除。

A其匹配\d*为零次,再匹配一个*,[^\d]*表示 零次或多次非数字 ,这里匹配**abcA, [\w]{6}匹配 BCD_89

第一次将A排除,完全是因为没有将*当作“非数字”。感谢Keystion
http://tools.jb51.net/tools/regex.asp

编辑于 2015-08-10 11:05:17 回复(4)
/      ^     \d*      \*      [^\d]*      [\w]{6}      $      /
^ 匹配输入字符串的开始位置。
\d 匹配一个数字字符。等价于 [0-9]。
* 匹配前面的子表达式零次或多次。
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。
[^xyz] 负值字符集合。匹配未包含的任意字符。
\w
匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'
{n} n 是一个非负整数。匹配确定的 n 次。
$ 匹配输入字符串的结束位置。

发表于 2016-07-29 10:48:27 回复(2)
推荐答案说得很对呃。 /^\d*\*[^\d]*[\w]{6}$/  首先/regex/前后的斜杠只是表示里面是正则表达式,其次的前后的^和$表示正则头尾,\d*表示数字0个或多个,\*表示一个*,那开头需要是*或者数字*,[^\d]*表示非数字0个或多个,[\w]{6}表示字母或者数字或者下划线6个。
发表于 2016-08-23 22:35:42 回复(0)
应该是C。
解释:\d*表示以数字开头,排除AB选项,\* 匹配一个星号,[^\d]*匹配任意非数字字符,[\w]{6}匹配包括下划线在内的数字及字母字符6个,D选项有连接符-,排除掉。
编辑于 2015-08-10 13:30:53 回复(1)
这个正则表达的意思:*号左边要么没有要么就是数字,右边存在至少6个字符
发表于 2019-02-27 12:57:14 回复(0)
/^表示开始。\d*\*合起来就是以任意个数字开头再匹配一个*,或者以*开头,因此排除B。[^\d]*表示任意个非数字(当然*也属于非数字)。[\w]{6}表示数字字母(大小写都包括)下划线一共六个,D选项有 - 所以排除。$/表示结束。
发表于 2017-08-21 04:32:25 回复(0)

^\d* 以数字(>=0次)开头; 123
\* 没有写次数,所以必须出现一次* * ***
[^\d]* 不是数字(>-0次); abcA abcA
[\w]{6}$ [0-9a-zA-Z_]出现6次,并结尾。 BCD_89 BCD_89


编辑于 2017-02-21 20:03:54 回复(0)
答案:好像没正确答案,不太确定
解释如下:
^\d*表示开头是数字,0个或多个
\*[^\d]*表示匹配一个*,然后匹配字母,0个或多个
[\w]匹配字符数字下划线
CD选项都有非下划线,AB选项都不是数字开头。。。晕
发表于 2015-01-27 18:49:25 回复(0)
答案A  C
A 选项,\d*  重复0次,然后\*  显示一次,之后 非数字显示0次或任意次,\w 字母数字下划线显示6次,明显正确
B  要么数字开头要么*开头
C  \d* 重复3次可以显示
D \w 不包含 -

发表于 2021-01-20 21:54:14 回复(0)
/^\d*\*[^\d]*[\w]{6}$/

  • ***abcABCD_89
  • abc*abcABCDEF
  • 123*abcABCD_89
  • 123*ABCabcd-89

1. \w ==> [A-Za-z0-9_] ==> 特殊字符是 _,不是-,排除D;
2. /^\d*\*$/ ==>  第一个 * 前面要不然啥都没有,要不然就是一堆数字,排除B;

[^\d]* ==> 一堆不是数字的字符,后面跟着6个\w ==> AC 符合;
发表于 2019-12-14 11:03:51 回复(0)
B为什么不对
发表于 2019-02-25 13:38:27 回复(0)
我以为单选题,A看都没看。。
发表于 2016-09-13 22:03:56 回复(0)
*表示0个或多个 \d表数字 \w表字母字符、数字、下划线 ^在开头表开始,$表示结尾 ^在中间表非
发表于 2016-03-24 10:43:59 回复(0)
var pattern=/^\d*\*[^\d]*[\w]{6}$/;
var text="***abcABCD_89";
document.write(pattern.test(text));
如上测试A,返回true。答案是AC。一定要记得:
n*是匹配0个或多个n;
n+是匹配至少一个n;
n?是匹配0或一个n;
发表于 2016-02-11 23:13:12 回复(0)
AC
发表于 2015-10-25 10:03:50 回复(0)
\d*表示以数字开头,* 代表多个,\* 匹配一个星号,转义表示,[^\d]*匹配任意非数字字符,[\w]{6}匹配包括下划线在内的数字及字母字符6个,因此选择D
发表于 2015-08-03 22:29:37 回复(0)
好像A,C都对
发表于 2015-06-30 13:01:57 回复(1)
好像没有正确答案。
发表于 2015-03-31 09:43:53 回复(0)
题有误。
正则是不是少了个{,应该是/^\d*\*[^\d]*[\w]{6}$/
A
发表于 2015-01-12 15:16:45 回复(3)