只有一个字符(*)或其他字母数字的正则表达式
问题描述:
我有一个正则表达式的条件,限制是8个字符,它应该接受数字,字母和?
,如果我们在字段中输入*
它应该给出错误。只有一个字符(*)或其他字母数字的正则表达式
或者如果我们在输入字段中输入*
,那么整个字段只能接受一个*
,除此以外。
例如:*
相当于wer?23w4
正则表达式是:
/[a-zA-Z0-9?]{8}/
答
可以使用交替操作符(|
)来指定一个非此即彼的条件。你的情况:
/\*|[a-zA-Z0-9?]{8}/
这意味着要匹配:
- 单
*
字符,没有别的 - 或者,由小写字母,大写字母,数字或
?
恰好八个字符。
注意,这取决于你如何在代码中使用这个,你可能需要添加锚^
和$
,以确保它测试针对整个领域:
/^(?:\*|[a-zA-Z0-9?]{8})$/
答
试试
/(\*|[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)
缺少锚:'^ \ * |([A-ZA-Z0-9?] {8} )'$ – Tushar