因为我尝试使用这个正则表达式
/name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?!\S)/g;
字符串我想要的输入例如:1.名称测试1.名称测试名称1.名称test-name-2但是当我尝试检查这个输入时它也是允许的
p5cysglq1#
据我所知,它是**\S**(大写s)。所以你可以试试这个:
regex = /name\s\S+$/gm
字符串WIKIPEDIA Article for Regular Expressions
vulvrdjw2#
与空白(\s)相反的正则表达式是\S:
\s
\S
public class main { public static void main(String[] args) { String name = "Stack Overflow is cool"; //replace non whitespace with * String result = name.replaceAll("\\S", "*"); System.out.println(result); } }
字符串其输出为“**"。注意在Java中,退格键必须转义。
vohkndzv3#
试试这个:
/^name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?:-[\d]+)?$/
字符串我已经检查了这个测试用例的模式。
const regex = /^name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?:-[\d]+)?$/; const input1 = "name test"; const input2 = "name test-name"; const input3 = "name test-name-2"; const input4 = "test-name "; console.log(regex.test(input1)); // Output: true console.log(regex.test(input2)); // Output: true console.log(regex.test(input3)); // Output: true console.log(regex.test(input4)); // Output: false
型我希望它能为你工作!
vbkedwbf4#
你好,也许可以试试类似于name\s+([A-Za-z 0 -9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?!\S)(?!)我添加了(?!),所以这意味着字符串后面不允许有空格x1c 0d1x的数据
cgh8pdjw5#
试试这个!
name\s{1}+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])*(?:-+[A-Za-z0-9]+)(?!\S)(?! )
字符串x1c 0d1x我希望它能为你工作!
vh0rcniy6#
您可以在正则表达式中使用行尾符号$来使其工作。修改正则表达式**:**
$
/name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)$/
字符串RegEx说明**:**/-开始和结束处的正斜杠分隔正则表达式模式。name-匹配文字字符串“name”,就像它出现的那样。\s+-匹配一个或多个空白字符(空格、制表符等)。(-开始捕获组。结果将提取该组的内容。[A-Za-z0-9]+-匹配一个或多个字母数字字符(字母或数字)。(?:-[A-Za-z0-9]+)*-这是一个非捕获组(?: ... ),后面跟着*,这意味着它可以匹配零个或多个出现的模式。这里的模式匹配连字符后跟一个或多个字母数字字符。)-结束捕获组。$-将图案锚定到字符串的末尾。这确保了匹配必须发生在输入的末尾。工作演示**:**
/
name
\s+
(
[A-Za-z0-9]+
(?:-[A-Za-z0-9]+)*
(?: ... )
*
)
// Input string examples const inputs = [ 'name test', 'name test-name', 'name test-name-2', 'name test-name anytext' ]; // Regular expression pattern const regex = /^name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)$/; // Iterate over the inputs inputs.forEach((input) => { const isMatch = regex.test(input); console.log(`${input} : ${isMatch}`); });
型
2fjabf4q7#
我会说第一个月或者,如果希望字符串按连字符分隔
name \w+(?:-\w+)*$
字符串
7条答案
按热度按时间p5cysglq1#
据我所知,它是**\S**(大写s)。所以你可以试试这个:
字符串
WIKIPEDIA Article for Regular Expressions
vulvrdjw2#
与空白(
\s
)相反的正则表达式是\S
:字符串
其输出为“**"。注意在Java中,退格键必须转义。
vohkndzv3#
试试这个:
字符串
我已经检查了这个测试用例的模式。
型
我希望它能为你工作!
vbkedwbf4#
你好,也许可以试试类似于name\s+([A-Za-z 0 -9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?!\S)(?!)
我添加了(?!),所以这意味着字符串后面不允许有空格
x1c 0d1x的数据
cgh8pdjw5#
试试这个!
字符串
x1c 0d1x我希望它能为你工作!
vh0rcniy6#
您可以在正则表达式中使用行尾符号
$
来使其工作。修改正则表达式**:**
字符串
RegEx说明**:**
/
-开始和结束处的正斜杠分隔正则表达式模式。name
-匹配文字字符串“name”,就像它出现的那样。\s+
-匹配一个或多个空白字符(空格、制表符等)。(
-开始捕获组。结果将提取该组的内容。[A-Za-z0-9]+
-匹配一个或多个字母数字字符(字母或数字)。(?:-[A-Za-z0-9]+)*
-这是一个非捕获组(?: ... )
,后面跟着*
,这意味着它可以匹配零个或多个出现的模式。这里的模式匹配连字符后跟一个或多个字母数字字符。)
-结束捕获组。$
-将图案锚定到字符串的末尾。这确保了匹配必须发生在输入的末尾。工作演示**:**
型
2fjabf4q7#
我会说
第一个月
或者,如果希望字符串按连字符分隔
字符串