我做了一个非常基本的步骤,检查一个特殊字符的存在。下一步需要一些建议,因为我希望能够在找到 # 后从 1 个位置开始搜索另一个特殊字符。
var reg = /#/;
alert(reg.test(string))
例如:
abc#.123 //invalid - as . is immediately after #
abc#12.3 //valid - as . is more than 1 character after #
abc#abcd.23 //valid - as . is more than 1 character after #
a#123.12 //valid - as . is more than 1 character after #
a#12123124.12 //valid - as . is more than 1 character after #
abcd#1231.09 //valid - as . is more than 1 character after #
1.23#12312.01 //invalid - as . is before #
123#122.01#12 //invalid - as there is another# after .
因此,#
和之间的差距.
应始终为 1 个或多个字符,并且#
始终在前。
您可以断言字符串的开头^
,不匹配 a#
或.
使用否定字符类 [^#.]
,然后匹配#
。
然后重复该部分,然后重复该部分,然后重复该部分直到字符串的末尾:
^[^#.]*#[^.#]+\.[^.#]*$
解释
^
字符串的开始[^#.]*#
匹配 0+ 次不匹配#
或.
匹配#
[^.#]+\.
不匹配 1+ 次.
或#
匹配一个点[^.#]*
匹配 0+ 次不.
或#
$
字符串结束let pattern = /^[^#.]*#[^.#]+\.[^.#]*$/;
[
"abc#.123",
"abc#12.3",
"abc#abcd.23",
"a#123.12",
"a#12123124.12",
"abcd#1231.09",
"1.23#12312.01",
"123#122.01#12"
].forEach(s => console.log(s + ": " + pattern.test(s)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句