Javascript 带特殊字符的正则表达式

Javascript 带特殊字符的正则表达式,javascript,regex,Javascript,Regex,嗨,我有这个正则表达式 /^[\w]|[åäöæøÅÄÖÆØ]$/ “tå”可以,但“tå”不行。为什么呢?我怎样才能让它接受以åäæäÄÆØ开头的单词 注意\w(和\w,\b和\b)以英语为中心\w仅表示[A-Za-z0-9.],其中A-Z仅表示26个英文字母。JavaScript的内置字符类不将其他字母视为“单词”的一部分 您需要构建一个字符类,其中包含所有要作为单词字符处理的字母(然后在“非单词字符”的任何位置使用该类的否定版本) 但这不是唯一的问题。您的正则表达式表示: 在字符串开头匹

嗨,我有这个正则表达式

/^[\w]|[åäöæøÅÄÖÆØ]$/

“tå”可以,但“tå”不行。为什么呢?我怎样才能让它接受以åäæäÄÆØ开头的单词

注意
\w
(和
\w
\b
\b
)以英语为中心
\w
仅表示
[A-Za-z0-9.]
,其中
A-Z
仅表示26个英文字母。JavaScript的内置字符类不将其他字母视为“单词”的一部分

您需要构建一个字符类,其中包含所有要作为单词字符处理的字母(然后在“非单词字符”的任何位置使用该类的否定版本)

但这不是唯一的问题。您的正则表达式表示:

在字符串开头匹配一个英文单词字符,在字符串末尾匹配此列表中的一个字符

操作符相当贪婪,在这种情况下,它将
^[\w]
[åäæäÄÆØ]$
作为替代方法。我觉得这不是你想要的

“tå”可以,但“tå”不行

我想这取决于你所说的“好”是什么意思。两者都匹配表达式:

console.log("tå".match(/^[\w]|[åäöæøÅÄÖÆØ]$/)); // ["t", index: 0, input: "tå"]
console.log("åå".match(/^[\w]|[åäöæøÅÄÖÆØ]$/)); // ["å", index: 1, input: "åå"]
“tå”
匹配,因为它匹配
^[\w]
备选方案<代码>“åå”匹配,因为它匹配的是
[ååæåÄååå]$
备选方案

我怎样才能让它接受以åäæäÄÆØ开头的单词

如果目标是只接受仅包含一个单词的字符串,其中“单词”包括数字和下划线(因为
\w
包含数字和下划线),则:


请注意,
\w
(和
\w
\b
\b
)以英语为中心
\w
仅表示
[A-Za-z0-9.]
,其中
A-Z
仅表示26个英文字母。JavaScript的内置字符类不将其他字母视为“单词”的一部分

您需要构建一个字符类,其中包含所有要作为单词字符处理的字母(然后在“非单词字符”的任何位置使用该类的否定版本)

但这不是唯一的问题。您的正则表达式表示:

在字符串开头匹配一个英文单词字符,在字符串末尾匹配此列表中的一个字符

操作符相当贪婪,在这种情况下,它将
^[\w]
[åäæäÄÆØ]$
作为替代方法。我觉得这不是你想要的

“tå”可以,但“tå”不行

我想这取决于你所说的“好”是什么意思。两者都匹配表达式:

console.log("tå".match(/^[\w]|[åäöæøÅÄÖÆØ]$/)); // ["t", index: 0, input: "tå"]
console.log("åå".match(/^[\w]|[åäöæøÅÄÖÆØ]$/)); // ["å", index: 1, input: "åå"]
“tå”
匹配,因为它匹配
^[\w]
备选方案<代码>“åå”匹配,因为它匹配的是
[ååæåÄååå]$
备选方案

我怎样才能让它接受以åäæäÄÆØ开头的单词

如果目标是只接受仅包含一个单词的字符串,其中“单词”包括数字和下划线(因为
\w
包含数字和下划线),则:


你为什么认为它失败了?我不会将\w放在方括号中,但各种系统似乎都允许这样做,并且以下两个选项都与正在测试的文本相匹配

Javascript

var test = 'åå';
if (test.match(/^[\w]|[åäöæøÅÄÖÆØ]$/)) { alert("Match"); }
PHP

echo(pregôu match(“/^[\w]|[ùùùùùùùùùùù]$/”,“ùùùùù249;

你想在这里实现什么?

为什么你认为它失败了?我不会将\w放在方括号中,但各种系统似乎都允许这样做,并且以下两个选项都与正在测试的文本相匹配

Javascript

var test = 'åå';
if (test.match(/^[\w]|[åäöæøÅÄÖÆØ]$/)) { alert("Match"); }
PHP

echo(pregôu match(“/^[\w]|[ùùùùùùùùùùù]$/”,“ùùùùù249;

您想在这里实现什么?

删除
$
<代码>[]表示字符类。“tå”可以,但“åå”不可以。它们都匹配表达式<代码>“tå”匹配,因为它匹配
^[\w]
备选方案<代码>“åå”匹配,因为它匹配
[åæÛÛ嗍嗍嗍嗍嗍]$
选项。删除
$
<代码>[]表示字符类。“tå”可以,但“åå”不可以。它们都匹配表达式<代码>“tå”匹配,因为它匹配
^[\w]
备选方案<代码>“åå”匹配是因为它匹配的是$备选方案。@user874774:不太清楚您要找的是什么。如果您的目标是查看字符串是否只包含一个单词,则选择“是”,将
$
放在末尾。@user874774:不清楚您要查找的内容。如果您的目标是查看字符串是否只包含一个单词,那么是,将
$
放在末尾。