只有一个字符(*)或其他字母数字的正则表达式

问题描述:

我有一个正则表达式的条件,限制是8个字符,它应该接受数字,字母和?,如果我们在字段中输入*它应该给出错误。只有一个字符(*)或其他字母数字的正则表达式

或者如果我们在输入字段中输入*,那么整个字段只能接受一个*,除此以外。

例如:*相当于wer?23w4

正则表达式是:

/[a-zA-Z0-9?]{8}/ 
+0

缺少锚:'^ \ * |([A-ZA-Z0-9?] {8} )'$ – Tushar

可以使用交替操作符(|)来指定一个非此即彼的条件。你的情况:

/\*|[a-zA-Z0-9?]{8}/ 

这意味着要匹配:

  • *字符,没有别的
  • 或者,由小写字母,大写字母,数字或?恰好八个字符。

注意,这取决于你如何在代码中使用这个,你可能需要添加锚^$,以确保它测试针对整个领域:

/^(?:\*|[a-zA-Z0-9?]{8})$/ 

Regular expression visualization

Debuggex Demo

试试

/(\*|[a-zA-Z0-9\?]{8})/g 

例如

"33asdsad".match(/(\*|[a-zA-Z0-9\?]{8})/g); 

"*".match(/(\*|[a-zA-Z0-9\?]{8})/g) 

"234234?d".match(/(\*|[a-zA-Z0-9\?]{8})/g)