字符串可以包含任何内容,但必须在整个字符串中有一个星号(*
),并且该星号可以位于字符串中的任何位置。
此外,字符串不应包含任何空格。
以下是有效字符串:
test*
*_test
test*something
以下是无效字符串:
test_**
**_test
test*something*
test *something
test *
testsomething
*
请帮助我为上面的场景写一个正则表达式。
字符串可以包含任何内容,但必须在整个字符串中有一个星号(*
),并且该星号可以位于字符串中的任何位置。
此外,字符串不应包含任何空格。
以下是有效字符串:
test*
*_test
test*something
以下是无效字符串:
test_**
**_test
test*something*
test *something
test *
testsomething
*
请帮助我为上面的场景写一个正则表达式。
4条答案
按热度按时间1dkrff031#
使用此RegEx:
Live Demo on Regex101
如果你想让它允许制表符(所有其他空格),使用
\s
而不是文本空格(``):它是如何工作的:
演示:
2wnc66cl2#
您可以使用
/^[^*\s]*\*[^*\s]*$/
来检查一个字符串,该字符串只包含一个星号并且不包含空格。如果只有一个星号无效,则应添加一个lookahead以检查是否存在至少两个字符,如/^(?=.{2})[^*\s]*\*[^*\s]*$/
一些示例参见https://regex101.com/r/yE5zV2/1(转到单元测试)
7dl7o3gd3#
您可以使用以下命令:
628mspwn4#
这些条件几乎不需要任何正则表达式(不过在检查空格时使用很好)。
POI为
return (x.indexOf("*", x.indexOf("*")+1) === -1 && x.indexOf("*") > -1 && !/\s/.test(x));
:x.indexOf("*", x.indexOf("*")+1) === -1
-确保没有2个星号x.indexOf("*") > -1
-确保至少有一个*
!/\s/.test(x)
-确保字符串中没有空格。