regex 什么是正则表达式“非空白”

smdnsysy  于 2023-08-08  发布在  其他
关注(0)|答案(7)|浏览(98)

因为我尝试使用这个正则表达式

/name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?!\S)/g;

字符串
我想要的输入例如:
1.名称测试
1.名称测试名称
1.名称test-name-2
但是当我尝试检查这个输入时它也是允许的

  1. nametest-nameanytext
    我想要的是在test-name之后不再允许任何空格或字符
p5cysglq

p5cysglq1#

据我所知,它是**\S**(大写s)。所以你可以试试这个:

regex = /name\s\S+$/gm

字符串
WIKIPEDIA Article for Regular Expressions

vulvrdjw

vulvrdjw2#

与空白(\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中,退格键必须转义。

vohkndzv

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


我希望它能为你工作!

vbkedwbf

vbkedwbf4#

你好,也许可以试试类似于name\s+([A-Za-z 0 -9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])(?!\S)(?!)
我添加了(?!),所以这意味着字符串后面不允许有空格
x1c 0d1x的数据

cgh8pdjw

cgh8pdjw5#

试试这个!

name\s{1}+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*[A-Za-z0-9])*(?:-+[A-Za-z0-9]+)(?!\S)(?! )

字符串
x1c 0d1x我希望它能为你工作!

vh0rcniy

vh0rcniy6#

您可以在正则表达式中使用行尾符号$来使其工作。
修改正则表达式**:**

/name\s+([A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)$/

字符串
RegEx说明**:**
/-开始和结束处的正斜杠分隔正则表达式模式。
name-匹配文字字符串“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}`);
});

2fjabf4q

2fjabf4q7#

我会说
第一个月
或者,如果希望字符串按连字符分隔

name \w+(?:-\w+)*$

字符串

相关问题